[PHP-dev 872]Re: fgetcsvてゆーか、ファイル入出力の、5c

Tomoyuki Asakawa tom @ asakawa.ne.jp
2003年 8月 27日 (水) 11:57:14 JST


あさかわ

>
>> という方が正しいように思います。
>
> 基準がないものに関して正しい・正しくないをいってもナンセンスだと思います
> が。。。
>
>> 少なくとも、マイクロソフト製品はそういう動きをします。
>
> マイクロソフト製品の動きは、標準からはずれて正しくないことが多いですね。
>
>

ただ、事csvに関しては、最初のメールにも書いた様に
MS-BASICのINPUT文に、そのまま突っ込めるデータなんですよ。
1980年初頭に、VISICALCが使用したのが最初だったと思います。

ようするに、BASICの文法で困らない、データ形式なわけで
同じく、BASICで困らない様に、日本語をつかう様に定義されたのが
SJIS(MS-漢字:CP/M漢字)です。
この場合、BASICに¥でエスケープするなんて概念がなかったので
2バイト目に¥がくるのです。逆に、"などが絶対にこない様になっています。

SJISとてちゃんとした規格ではありませんが
csvも、歴史的経緯から、¥でエスケープするというのは
UNIX系での、拡大仕様だとおもう。
もちろん、PHPもUNIXで使ってる場合は、しかたないかもしれませんが
Windowsで使った場合は、おかしいということになると思う。

そもそも、スペースでセパレートされたものは、csvじゃないです。
csvの処理系で、セパレータを、再定義すれば、使えるというだけです。

で、結局のこと、fgetcsvが、入力漢字コードの識別を
してくれれば、平和になってしますのですがね。

もしくは、sgetcsvとなっていて、ファイル直ではなく、バッファからの
読み込みができれば、先に、コード変換してから、つかえば問題は
出現しなくなります。









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