例えば、サーバ側のMysqlの文字コードが、UTF-8でプログラム(ソースコード)がSJISの場合・・・
mysql_query("SET NAMES sjis;")
をかませれば、文字化け無く、一見通常に表示します。
しかし、ここに落とし穴が・・・
一般的な日本語文字は正常に表示されるのだが、特殊な文字(@、A・・・、、アなど)は?になってしまう
これは、やはりMysqlでのマルチバイトのコード変換が上手くいっていないものと考えられる。
結局、横着せずにサーバ環境に合わせて文字コードを設定するべきと考える。
つまり次のように心がければ、このような災難に遭う確率が少ない
- サーバ側がSJISの場合は、ソースコードもSJISでコーディングする。
- 当然、サーバ側がUTF-8の場合は、ソースコードもUTF-8でコーディングする。
※結局、いろんな事をせずにシンプルに文字コードを統一するように心がければ良いことになる。(simple is best である)。 そうすれば自ずとmysql_query("SET NAMES sjis;") を入れる必用も必用も無くなる。
mysql_query("SET NAMES sjis;")は文字化けの根本的な対策にはなりません
|