[PHP-users 32091] fgetcsv関数で日本語を含むCSVファイルが読み込めない

Masanori Kobayashi markun @ leo.bekkoame.ne.jp
2007年 5月 10日 (木) 00:20:38 JST


平村さんへ

小林といいます。
以前、わたしもfgetcsvでは苦労しました。
fgetcsv()とsetlocale()とスレッドに関するごたごたについては、以前私がこの
メーリングリストに投げて、記録が残っています。[PHP-users 28080]のあたり
です。
php5.x以降だったかな、fgetcsvなどの関数はローケルの設定に影響されるよう
になったようです。わたしは、読み込むファイルの文字コードに合わせてローケ
ルを変更してから各関数でファイルを読み込むようにしています。
「setlocale()」関数をつかって動的に設定を変更します。使用上の注意はプロ
セスごとにローケルを変更するので、Windows系のOSのようにスレッドで管理し
ているOSで使用すると不具合が発生するようです。
詳細はこちらの説明をご覧ください。
http://jp.php.net/manual/ja/function.setlocale.php

1. setlocale()で読み込むファイルと同じ文字コードに変更する。
2. fgetcsv()などでファイルを読み込む。
3. setlocale()で元のローケルに戻す。

読み込むファイルの文字コードとシステムのローケルが一致していれば、このよ
うな面倒な手順はしなくても良いです。

ほかにも良い方法があるのかな・・・。
では。


-- 
_/_/ Masanori Kobayashi
_/_/ mailto:markun @ leo.bekkoame.ne.jp
_/_/ mailto:PXK11641 @ nifty.com



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