|                                            今となって懐かしい話だが、記憶のあるウチに書き留めておきっます。 
「MySqlの文字化け」と検索すると沢山の記事が引っかかると思います。 
 
文字化けはMysqlのバージョンによって大きく異なります。 
例えばVer4.0では何事も無くSJISを使っていられたのに、Ver4.1にした途端にいきなり文字化けと云った現象が起こります。 たかが4.0 4.1へのバージョンアップが命取りになります。 
極端な話をすればMysql4.0とMysql4.1は別の物と考えた方が良いでしょう。 
結論を言えば、SJISは日本独自の文字コードであり国際コードとしては扱われなって置き去りにされた常態です。 根本的にはマルチバイト対応におけるデータベースシステムのバグ(文字コードの誤認識)なのでしょうが、今更急に流れが変わるわけでも無いので、対応策のみまとめておきます。 
 対策 
簡単に云えばSJISを使わずに全てUTF-8に文字コードを統一してしまうことです。 
対策 my.ini(my.cnf)に次のように追加 
[mysqld] 
skip-character-set-client-handshake  ←文字コードの自動判別を実施しないようにする 
(正確にはMySQL バージョン 4.1.15 以降) 
対策 デフォルトキャラセットを全てUTF-8にする 
default-character-set=utf8 
 
結局、サイトの中の文字コードを全てUTF-8に統一してしまうと云う事です。 
携帯サイトなどの都合でどうしてもSJISが必用な場合にはmb_convert_encodingでSJISに変換して表示する。 
 教訓・・・ 
新しいものが全ての面で優れているとは限らない。(勿論、優れている点の方が多いですが・・・ )   |