文字化け対策
PHP でプログラミングしていて
文字化け被害に遭うこと散々・・・。
というわけで、文字化け対策のまとめ。
- // 文字エンコーディングを設定する
- ini_set('default_charset', 'UTF-8');
- mb_internal_encoding('UTF-8');
これらの設定は php.ini からも行えるが
一般にソースを公開するスクリプトであれば
記述しておくべき設定・・・だそうな。
今まで何度も文字化けを経験し
その都度対応してきた結果
最新の対策状況は
- mb_language("uni");
- mb_http_input("auto");
- mb_http_output("utf-8");
- ini_set('mbstring.script_encoding', 'UTF-8');
- ini_set('default_charset', 'UTF-8');
- mb_internal_encoding('UTF-8');
- mb_language( 'Japanese' );
こんな感じである。
mb_language(“uni”);
mb_language( ‘Japanese’ );
あれれ・・・その都度対応してきたら
こんなことに・・・orz
むむむ・・・まだまだ研究が必要だ。
また時間があるときにチャレンジ!
ZF を利用している場合
こんなコードも記述した方がよいみたい。
- $this->view->setEncoding('UTF-8');
- $this->view->setEscape('htmlentities');
SET NAMES
文字化け回避策として、あちこちのサイトで SET NAMES が
紹介されているが、こんな記事もあった。
SET NAMES, SET CLIENT ENCODINGを利用しないで、
mysql_set_charset, pg_set_client_encodingを利用すれば、
このような不整合が発生しないので問題も発生しなくなります。
引用元:yohgaki’s blog のコメント欄 2008-05-10 12:09のもの
大垣靖男さん(上記ブログのオーナー)お勧め設定
- default_charset="UTF-8"
- magic_quotes_gpc=off
- mbstring.input_encoding="pass"
- mbstring.internal_encoding="UTF-8"
- mbstring.output_encoding="pass"
- mbstring.language="japanese"
- mbstring.substitute_charactor=""