PHP:fgetcsv()日本語消失
2008年10月27日(月) 21:42 JST
閲覧数 5,527
WebメーラーのSquirrelMailを、とある理由で構築したのですが、
アドレス帳に書いた日本語部分が表示されません。
サーバ上のファイルには、日本語で出力されているので、おかしいと思いまして。。。
どうやら、PHPのfgetcsv()関数が原因だった様です。
fgetcsv()関数は、ロケールを意識するとの事で、srchack.orgの「en_US」がモロに引っかかった様です。
・PHPのマニュアルには、こんな感じです。
注意: この関数はロケール設定を考慮します。もし LANG が例えば en_US.UTF-8 の場合、 ファイル中の 1 バイトエンコーディングは間違って読み込まれます。
んで、解決策としては、
1. 日本語を使用する際はフィールドをダブルクォートで囲む
2. setlocale(LC_ALL, ‘ja_JP.EUC’);等で一時的にロケールを変更する。
汎用的に考えると、アドレス帳追加時に、ダブルクォートで囲んでファイルに出力する様にプログラム修正ですかね。。。
アドレス帳に書いた日本語部分が表示されません。
サーバ上のファイルには、日本語で出力されているので、おかしいと思いまして。。。
どうやら、PHPのfgetcsv()関数が原因だった様です。
fgetcsv()関数は、ロケールを意識するとの事で、srchack.orgの「en_US」がモロに引っかかった様です。
・PHPのマニュアルには、こんな感じです。
注意: この関数はロケール設定を考慮します。もし LANG が例えば en_US.UTF-8 の場合、 ファイル中の 1 バイトエンコーディングは間違って読み込まれます。
んで、解決策としては、
1. 日本語を使用する際はフィールドをダブルクォートで囲む
2. setlocale(LC_ALL, ‘ja_JP.EUC’);等で一時的にロケールを変更する。
汎用的に考えると、アドレス帳追加時に、ダブルクォートで囲んでファイルに出力する様にプログラム修正ですかね。。。