php简单的文件处理程序,将一个文件夹下的所有文件遍历并存入数组,然后将每个文件(ANSI简体中文编码)逐行读取并存入另一个数组(以回车和换行为依据切割)。从第二个数组中截取需要的数据并存入新建文件中。在初始文件与转换后的新文件编码格式一致的情况下,新文件打开后中文部分出现乱码,数字和英文正常。试过所有的转码方法,如iconv、mb_convert_encoding以及在头部加charset等等都无效。请问这是为什么?怎么解决?
echo "begin...".PHP_EOL;
$i = 0;
$files = glob('目标文件路径'); //把目标文件夹下所有的文件存到一个数组里面
$size = count($files);
foreach ($files as $filename) {
$string=file_get_contents($filename);
//echo iconv("GBK", "UTF-8//IGNORE",$string);
$array=explode("\r\n",$string); //字符串转数组(换行+回车切割)
foreach($array as $key=>$linedata) {
$time=substr($linedata,32,10); //时间
$name=substr($linedata,337,40); //名称
//$name=mb_convert_encoding(substr($linedata,337,40),"GBK","auto");
/*$name=iconv("GBK","UTF-8//IGNORE",$name);
echo $name.PHP_EOL;*/
$sql="insert into tlog(time, ame) values ('".$time."',".name."');";
//$sql=iconv("GBK", "UTF-8//IGNORE",$sql);
//$sql=mb_convert_encoding($sql,"UTF-8");
file_put_contents("test.sql",$sql.PHP_EOL,FILE_APPEND);
}
//加入进度显示:已转换/总长度
$i++;
echo ($i/$size * 100)."%".PHP_EOL;
}