[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