[PHP-users 28080] setlocale()が動作しなくなる事がある

Masanori Kobayashi markun @ leo.bekkoame.ne.jp
2006年 1月 12日 (木) 16:51:41 JST


長野の小林といいます。

PHP5.1.2-dev
Apache2.0.55
という環境で作業しています。
SJISで記述されているCSVファイルをfgetcsv()で取り込み、UTF-8に変換して作
業しようとしています。そのときに、fgetcsv()がlocaleの指定に従うとのこと
なので、setlocale(LC_CTYPE, "ja_JP.SJIS")で、SJISに一時的に変更して作業
しています。普段は問題なく動作しているのですが、何かのタイミングで
setlocale()関数が正しく変更の制御ができない事が起きます。必ず発生すると
いう条件がつかめずにいます。phpのバグもざっと見てみたのですが、いまひと
つ該当するものがあるのか見つけられませんでした。何か情報をお持ちの方がお
りましたら、教えてください。

よろしくお願いします。

実行しているのは、こんな感じのコードです。
<?php
setlocale(LC_CTYPE, "ja_JP.SJIS");
$fp=fopen("読み込みcsv_file","r");
$c=array();

while(($a=fgetcsv($fp,10240))!=FALSE)
{
	array_push($c,$a);
}

fclose($fp);

setlocale(LC_CTYPE,NULL);

for($i=0;$i<count($c);$i++)
{
	$d=$c[$i];
	
	$e=array();
	
	for($j=0;$j<count($d);$j++)
	{
		array_push($e,iconv("SJIS","UTF-8",$d[$j]));
	}
	
	array_push($e,md5($e[0].$e[1].$e[2].$e[5],TRUE));
	
	print_r($e);
}
?>

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



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