郄(はしごたか), 粼(たつさき)など、PHPで特定の文字コードを処理できない。

==
1.php.iniの編集
2.処理プログラムの扱い文字コードの変更
==

※「郄(はしごたか)」「粼(たつさき)」などのIBM拡張文字と
呼ばれているものをPHPで処理する方法。
これらの文字がデータに含まれていることで以下2点の現象を確認。

A.データを受信した段階で文字化けを起こしている。(→?に変換される)
(POST,GETなどでパラメータとして受け取ろうとしたとき)
B.Aを解決できた場合、プログラム内で処理の段階で文字化けを起こす。


■1.php.iniの編集
Aの解決のため、php.iniの内容を一部変更。
変更点:
 mbstring.http_input = pass

※「郄(はしごたか)」「粼(たつさき)」などのIBM拡張文字と
呼ばれているもの。
↑これらは文字コードSJIS-Winに設定することで表示が可能でしたが、
受信の段階で、SJISなどの文字コードに変換されている(?)ようでした。

設定をPASSに変更することで受信が可能になりました。


■2.処理プログラムの扱い文字コードの変更

ini_set('default_charset' , 'SJIS-win');
ini_set('mbstring.internal_encoding' , 'SJIS-win');
ini_set('mbstring.http_output' , 'SJIS-win');
mb_detect_order(array('ASCII','JIS','UTF-8','SJIS-win','EUC-JP'));

ini_set('mbstring.http_output','SJIS');

を受信データを利用するプログラム内に設定しました。(DB接続クラスを除く)
このことで受信できたIBM拡張文字をSJIS-WINで利用することができるようにな
り、影響を回避しました。


参考サイト:
http://yossy.iimp.jp/wp/?p=58
http://ml.php.gr.jp/pipermail/php-users/2004-July/023123.html
http://www.mono-space.net/blog/programming/e070224_windows31j.htm
http://blog.livedoor.jp/loopus/archives/50160285.html
http://ml.postgresql.jp/pipermail/pgsql-jp/2005-April/018793.html
http://homepage1.nifty.com/~petronius/kana/kakutyaumozi.html



キーワード:PHP, IBM拡張文字, 郄(はしごたか), 粼(たつさき), php, SJIS-WIN