マルチバイト関数には文字コード指定
2007/08/15 | マイPHPメモ
今まで使ってたプログラムを別の環境に移設したら正しく動作しなくなった、というのはよくある話だ。今回マルチバイト文字を切ったり張ったりするプログラムを別の場所に移植しようとしたら全然動かなかった。
「正しく(予期したとおりに)動かない」というのには何らかの理由があるはずだ。
PHPには日本語(マルチバイト文字)を扱うための関数群(マルチバイト関数)がある。今回はこの関数が、期待する動作をしてくれなかったために発生してしまったようだ。「マルチバイト関数が期待通りの動作をしない」という場合、大抵は正しく文字コードを認識していないことに起因する。今回もそのとおり、文字コードを正しく認識していなかったようだ。
では、正しく認識させる方法。これには二つある(と思う)。
(1) 設定でプログラムの文字コードを指定しておく。
要は「スクリプトのエンコーディングが何なのか」ということをphp.ini、.htaccessなどで指定しておくことだ。
(2) マルチバイト関数の引数で文字コードを渡す。
mb_で始まる関数は大抵その引数で、文字コードを指定して渡すことが出来るので、正しい文字コードを指定しておく。
この2点。
ちょっと頭の片隅に入れておく。