文字化け対策

Posted by muchag | PHP,Zend Framework | 2010-05-24 (月) 17:14:32

PHP でプログラミングしていて
文字化け被害に遭うこと散々・・・。

というわけで、文字化け対策のまとめ。

  1. // 文字エンコーディングを設定する
  2. ini_set('default_charset', 'UTF-8');
  3. mb_internal_encoding('UTF-8');

これらの設定は php.ini からも行えるが
一般にソースを公開するスクリプトであれば
記述しておくべき設定・・・だそうな。

今まで何度も文字化けを経験し
その都度対応してきた結果
最新の対策状況は

  1. mb_language("uni");
  2. mb_http_input("auto");
  3. mb_http_output("utf-8");
  4.  
  5. ini_set('mbstring.script_encoding', 'UTF-8');
  6. ini_set('default_charset', 'UTF-8');
  7. mb_internal_encoding('UTF-8');
  8. mb_language( 'Japanese' );

こんな感じである。

mb_language(“uni”);
mb_language( ‘Japanese’ );

あれれ・・・その都度対応してきたら
こんなことに・・・orz

むむむ・・・まだまだ研究が必要だ。
また時間があるときにチャレンジ!

ZF を利用している場合

こんなコードも記述した方がよいみたい。

  1. $this->view->setEncoding('UTF-8');
  2. $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のもの

大垣靖男さん(上記ブログのオーナー)お勧め設定

  1. default_charset="UTF-8"
  2. magic_quotes_gpc=off
  3. mbstring.input_encoding="pass"
  4. mbstring.internal_encoding="UTF-8"
  5. mbstring.output_encoding="pass"
  6. mbstring.language="japanese"
  7. mbstring.substitute_charactor=""

参考元:yohgaki’s wiki PHP/tips/日本語環境php.ini設定

PHP,Zend Framework | 2010-05-24 (月) 17:14:32 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment