[PHP-users 16061]Re: 機種依存文字や外字について

HAMAI Kyoichi k-hamai @ pb.jp.nec.com
2003年 6月 20日 (金) 11:19:09 JST


濱井です。
2003/06/19 17:18:54 +0900にSatoshi Iwanagaさんが送られた
メールに関する返信です。

>「森」(SJISコード「9058」)という時をSJISに変換した場合、
>「9058」と上手くSJISに変換されます。
>しかし外字(例えばSJISコード「fa5c」)を、SJISに変換すると
>「ed40」と変換されてしまいました。
>
>
>■EUCでデータが渡ってきてないのかと思い、調査
>---------------------------------------------
>// $euc_data ・・ EUCで渡ってきたデータ
>echo mb_detect_encoding($euc_data);
>---------------------------------------------
>
>「森」で試した場合、正しくEUC-JPと表示されたのですが
>SJISコード「fa5c」で試した場合、UTF-8と表示されました。

HTTPでは、クライアントからサーバへデータを渡す際の文字コード(正確には
charset)は規定されていませんし、文字コードを明示する方法も規定されて
いません。

シフトJISとかEUCとかの判断は、渡ってきたデータにより推測しているだけ
なので、どうしてもある程度の間違いが生じます。特に外字や機種依存文字が
使われていると間違いやすくなります。

外字や機種依存文字単独で文字コードを正しく識別するのは事実上無理だと
思います。


PHP-users メーリングリストの案内