質問: wordpressがmysqlに日本語データを格納する際の文字コード 初めまして、satsukimaと申します。 現在他のブログからの引越し作業を行うべく、wordpressのインストールを終えました。 そして別のブログサイトからのテキストデータをmysqlに流し込もうとしています。 ところが日本語の部分にのみ文字化けが発生してしまいます。 wordpressではmysqlに日本語データを格納する際、どのような文字コードを使っているのでしょうか? 以下の5点を試しました。 1.utf8の端末でmysqlのcli(mysql client)から"insert into"コマンドを使ってデータを追加しましたが、cliのselect文とブラウザの両方で確認したところ日本語部分で文字化けが発生します。 2.ブラウザから通常通りに管理画面より日本語の入力を行うと文字化けせずに正常にブラウザに表示されます。 3.しかし正常にブラウザに表示されるデータをcliのselect文にて確認すると文字化けが発生します。cli端末の文字コードをutf8、euc、shift-jis、iso-2022-jpで試しましたが、やはり「?????」といったような文字列が表示され、文字化けします。 4.mysql query browserからselect文を実行すると、ブラウザ上で正しく表示されているデータは正常に表示されます。 5.自分で書いたphpスクリプトでselectを実行しブラウザから表示させると、文字化けします。ブラウザの文字コードをutf8、euc、shift-jis、iso-2022-jpで試しましたが、文字化けします。 どなたかヒントでも頂けないでしょうか。 ぜひ宜しくお願い致します。
回答: mysqlバージョンは何でしょうか。 4.0以前ならば、まず、mysqlに接続し、 \s でdbのキャラクタセットを確認します。 ujis => euc_jp utf-8 => 読んでのごとくutf-8 でもおそらく4.1以降なのではないでしょうか? 4.1以降では、データベース、テーブルごとに文字コードを 変えることができるようになった反面、日本語文字化けに直面 しやすくなってしまいました。 原因は、普通に配布されているバイナリが、 laten-1でコンパイルされているためで、たいがい日本語が化けます。 これは、一般的に、sql文の前に、set names を最初に実行しておく ことで回避します。 たとえば、実際のデータの文字コードがeuc_jpならば、 > set names ujis; > insert into ・・・・ というように実行します。 set names のあとは、shift-jisなら、sjis、utf-8なら、utf-8 になります。 もちろん、端末の文字コードも一致させるべきです。 以上