统一编码
2.文件的编码未知 要读取文件内容 内容编码最后统一转换成utf-8 最终入库
目前想用mb_convert_encoding($file_content,'utf-8',"auto"); 好像不行 求大神赐教!帮忙分析下(txt的复杂点)
回复讨论(解决方案)
用 mb_convert_encoding 大多不能得到正确的判断
所以 mb_string 扩展有了一个新成员 mb_check_encoding
这个函数可以准确的判定来源是否为指定的字符集
只不过你需要写代码来枚举可能的字符集:
if(mb_check_encoding($s, 'utf-8')) ....
elseif(mb_check_encoding($s, 'gbk')) ....
elseif(mb_check_encoding($s, 'big5')) ....
else ....
用 mb_convert_encoding 大多不能得到正确的判断
所以 mb_string 扩展有了一个新成员 mb_check_encoding
这个函数可以准确的判定来源是否为指定的字符集
只不过你需要写代码来枚举可能的字符集:
if(mb_check_encoding($s, 'utf-8')) ....
elseif(mb_check_encoding($s, 'gbk')) ....
elseif(mb_check_encoding($s, 'big5')) ....
else ....
有用,前几天,写了个读取csv格式的数据,一度在纠结由txt转换csv格式的编码问题....
用 mb_convert_encoding 大多不能得到正确的判断
所以 mb_string 扩展有了一个新成员 mb_check_encoding
这个函数可以准确的判定来源是否为指定的字符集
只不过你需要写代码来枚举可能的字符集:
if(mb_check_encoding($s, 'utf-8')) ....
elseif(mb_check_encoding($s, 'gbk')) ....
elseif(mb_check_encoding($s, 'big5')) ....
else ....
if(mb_convert_encoding($file_content,'ASCII')){ mb_convert_encoding($file_content,'UTF-8',"ASCII"); }elseif(mb_convert_encoding($file_content,'GB2312')){ mb_convert_encoding($file_content,'UTF-8',"GB2312"); }elseif(mb_convert_encoding($file_content,'GBK')){ mb_convert_encoding($file_content,'UTF-8',"GBK"); }elseif(mb_convert_encoding($file_content,'BIG5')){ mb_convert_encoding($file_content,'UTF-8',"BIG5"); }else{ mb_convert_encoding($file_content,'UTF-8',"auto"); }
还有有乱码
http://fashionistess.com/awr1/1.php
不明白你给出的连接反映的是什么
既然你已经发现 mb_convert_encoding 不准确了,那么你为什么还在用呢?
$file_content = '待转码的内容';$charset = '';if(mb_check_encoding($file_content, 'utf-8')) $charset = ''; //已是 utf-8 了无需转码elseif(mb_check_encoding($file_content, 'big5')) $charset = 'big5'; //big5 的码值范围小于 gbk,应先判断elseif(mb_check_encoding($file_content, 'gbk')) $charset = 'gbk'; //gb2312 是 gbk 的子集,只判 gbk 就可以了if($charset) $file_content = mb_convert_encoding($file_content, 'utf-8', $charset);
不明白你给出的连接反映的是什么
既然你已经发现 mb_convert_encoding 不准确了,那么你为什么还在用呢?
$file_content = '待转码的内容';$charset = '';if(mb_check_encoding($file_content, 'utf-8')) $charset = ''; //已是 utf-8 了无需转码elseif(mb_check_encoding($file_content, 'big5')) $charset = 'big5'; //big5 的码值范围小于 gbk,应先判断elseif(mb_check_encoding($file_content, 'gbk')) $charset = 'gbk'; //gb2312 是 gbk 的子集,只判 gbk 就可以了if($charset) $file_content = mb_convert_encoding($file_content, 'utf-8', $charset);
不好意思 刚才代码写错了
链接是测试结果 编码问题会影响解析的结果(以前只分析linux下生成的文件所以一直没发现这个问题) 谢谢 问题已经解决啦
上一篇: 抱怨一下PHP