« PHPスクリプトの文字コード | メイン | C++Builder2007への移行作業 »

PHPスクリプトに送信されたデータの文字コードの変換

PHPスクリプトに送信されたデータの文字コードの変換について

Webアプリケーションでは、ブラウザから送信されてくるデータの文字コードを指定することはできません。
そこで、データを受信した後に文字コードを判別し、変換する必要があります。

mbstring.encoding_translation

設定ファイル(php.ini)のmbstring.encoding_translationを「On」にすると、受信したデータを自動的に内部エンコーディングに変換します。

mbstring.encoding_translationの初期値は「Off」です。
アプリケーションの互換性を考えると「Off」のまま使用する方が良いと考えます。

mb_convert_encoding

文字コードを変換するには、「mb_convert_encoding」を使用します。

/* 内部文字エンコーディングからSJISに変換 */
$str = mb_convert_encoding($str, "SJIS");

/* EUC-JPからUTF-7に変換 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* JIS, eucjp-win, sjis-winの順番で自動検出し、UCS-2LEに変換 */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

mb_convert_encoding」の3番目の引数に"auto"を指定する場合は、あらかじめ設定ファイル(php.ini)で「mbstring.language=Japanese」を指定するか、「mb_language」を使用して、言語を指定します。

/* "auto" は、"ASCII,JIS,UTF-8,EUC-JP,SJIS" に展開される */
mb_language('japanese');
$str = mb_convert_encoding($str, "EUC-JP", "auto");

携帯電話の絵文字など、規格外のコードが含まれている場合は、「mb_substitute_character」を使用して変換し、内部で処理します。
(参考)docomo(ドコモ)やauの絵文字の抽出をPHPで最も簡単にする方法

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/457

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年07月25日 22:11に投稿されたエントリーのページです。

ひとつ前の投稿は「PHPスクリプトの文字コード」です。

次の投稿は「C++Builder2007への移行作業」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35