[PHP-users 17538]Re: SJIS-EUC変換時の文字化け
Tomoyuki Asakawa
tom @ asakawa.ne.jp
2003年 8月 27日 (水) 15:00:50 JST
あさかわ
> 原因は、分かりませんが、\ が悪さをしているようですが、PHP は Shift_JIS
> に対応したものを使ってますよね?
>
実は、PHP-DEVで、ちょうど話題にしてました。
\がくると、fgetcsvは、エスケープとして処理してしまうのです。
なので、SJISの場合、2バイト目が、\(5c)になる様な文字がくると
そこで、ずれるので、文字化けになるのです。
しかし、私は、csvには、その仕様の歴史的経緯から、\でエスケープするという
概念は、ないはずだという、立場です。
もともと、csvは
MS-BASICのINPUT文に、そのまま突っ込めるデータなんですよ。
1980年初頭に、VISICALCが使用したのが最初だったと思います。
\でエスケープされたら、1000円って書きたいとき、\1000円てかかないと
ならなくなりますよね。
ようするにcsvは、BASICの文法で困らない、データ形式なわけで
同じく、BASICで困らない様に、日本語をつかう様に定義されたのが
SJIS(MS-漢字:CP/M漢字)です。
この場合、BASICに\でエスケープするなんて概念がなかったので
2バイト目に\がくるのです。逆に、"などが絶対にこない様になっています。
PHP-users メーリングリストの案内