[PHP-users 13387] Re: fgetcsv on solaris

Kiyoshi Sawada php-users@php.gr.jp
Tue, 18 Feb 2003 16:33:55 +0900


沢田@名古屋第二赤十字病院です。

こちらでも、EUC-JP で書かれた日本語の文書を fgetcsv で読み込むと、
一部の文字が欠けてしまう症状が出ました。

環境は、
・SunOS xxxxx 5.8 Generic_108528-15 sun4m sparc
・Apache 1.3.27 + php-4.3.0
・gcc version 3.1

1年前の仲山さんの記事[PHP-users 5675]を参考にして、php-4.3.1に
Upするついでに、パッチをあてたら、上手く動きました。

仲山さん、ありがとうございました。


On Mon, 25 Feb 2002 07:05:08 +0900  NAKAYAMA Masahiro <masa@uryusoft.net> wrote:

> 仲山@慶応大学です。
> 
> 
> EUC-JP で書かれた日本語の文書を fgetcsv で読み込むと、一部の文字が欠け
> てしまいます。状況としては以下の通りです。
> 
> 0.  環境は、Solaris8 上の Apache 1.3.23 + php-4.1.1 です。
> 1.  "" でくるむと問題ない。
> 2.  fgets してから explode すると問題ない。
> 3.  httpd を動かす時に LANG=ja になっていたので LANG=C で上げ直すと
>     欠け方が微妙に変わる。
> 
> 
> ソースを当たってみたのですが、ext/standard/file.c の fgetcsv で 
> isspace((int)*tptr) となってる部分を、
> isspace((unsigned char)*tptr) と unsigned char でキャストすることで
> 文字が欠けないようになりました。
> 
> どうやら、isspace(3) で上位バイトが Solaris の locate 関係と絡んで悪さ
> をしていると推測しているのですが、他にレポートも見あたらないので、何か
> 他の問題に依存する問題の気もしています。
> # 少なくとも Linux と FreeBSD 上で動いている PHP ではこの問題はありま
> # せんでした。
> 
> 4.1.1 に対する修正差分を以下に置いておきます。
> もし同様の症状があるようでしたらお試しください。
> http://www.sfc.wide.ad.jp/~masa/tmp/file.c
> 
> 正しい修正なら本家に送るべきなのですが、何より他の環境でのレポートが欲
> しいです。上手く動いた、動かない等の報告が頂けるとありがたいです。
> 
> 
> -- 
> NAKAYAMA, Masahiro <masa@sfc.wide.ad.jp>
> PGP: 0x18770102(DH/DSS) [A0F4 5293 2906 7BE9 E0FC  4264 6992 C64A 1877 0102]
> 
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users