2011年3月10日木曜日

utf8からMySQLへ 文字コードの違いか?文字がバケバケだ。

 昨日まではテーブルを作成したり、削除したりの最初の準備処理を一応終了した。画面周りなどはまったく考えていない。一連の処理ができるかできないかだけ検証できるかだけの話であります。それで出来上がったテーブルに文字を入れてみた。
 その結果、かなりの文字化けがあることを発見した。たぶんそんなことじゃないかなと最初から懸念するところがあったのです。これからのWEBアプリは全てHTML5で作成することにしている。HTML5の文字コードはutf-8と決められているのです。MySQLの文字コードは確かEUCだったと思います。以前にデータベースがらみのWEBアプリを作成したときはHTML側の文字コードはEUCでしたから、何ら文字化けすることもなくすんなりいったので問題にならなかった。
 まだ、調査をしていないので、その解決策は今のところまったくないのであります。どうしょう。

 少し調査したら、MySQL側がEUCではなくて、サーバー側のPHPがEUCになっているみたいです。”原因はサーバで扱うPHPの内部処理の文字コードが、元々EUCをベースである事に起因している様です。”となってました。もっと調査してみたら、最初に私が疑ったMySQL側もEUCのようであります。これは益々問題が深みにはまっていきそうだ。
 やはり同じ現象で悩んでいる人は多いのですね。また試していませんが、メモ代わりに

PHP+MySQL+UTF-8で文字化け対策

 以前に書いた問題で、オートナンバーの設定ってのがありましたがこれもすんなり解決しました。テーブルを作成する時に " id int unsigned not null auto_increment primary key,"このように設定すればなんら問題ないです。データを入れる時はこのidを無視してやれば、自動で連番が降られます。

0 件のコメント: