在做网页采集的时候 发现采的数据乱码本来是
平台概览 变成了1.平尿¦è§
用 mb_detect_encoding($html, array("ASCII","GB2312","GBK","UTF-8"))查出编码是CP936
用了网上的
mb_convert_encoding($html, "UTF-8", "CP936");
iconv('CP936', 'UTF-8//IGNORE', $html);
都失败 不知道有没有好办法 卡在这好久了!
试一下mb_convert_encoding($html, "CP936","UTF-8");
从数组中取出字符编码为CP936,无法正常显示及写入数据库
无论是
mb_detect_encoding($str, 'GBK, gb2312, GB18030, ISO-8859-1, ASCII, UTF-8', true)
mb_convert_encoding($str, 'UTF-8', 'CP936');
还是
iconv('utf-8', 'latin1', $str);
iconv('utf-8','latin1//IGNORE', $str);
都无法解决问题,汉字会被消灭掉,无法正常写入数据库
最终解决方案
先赋值到一个新变量,使用新变量入库
function toUtf8($str) {
$encode = mb_detect_encoding($str, array('CP936', "ASCII","GB2312","GBK",'UTF-8','BIG5'));
if ($encode == 'UTF-8') {
return $str;
} elseif ($encode == 'CP936') {
return iconv('utf-8', 'latin1//IGNORE', $str);
} else {
return mb_convert_encoding($str, 'UTF-8', $encode);
}
}
网上找的试试看