最近在抓取一个GB2312/GBK编码的页面,得到中文数据之后写入Mysql。表的编码是utf8_general_ci,突然之间居然不能写入Mysql了。将运行页面改为GBK,能写入,但是是乱码。
首先想到的解决办法是,将GB2312/GBK转换为UTF8编码,然后将数据库写入环节设置为UTF8:
$post_title=iconv("GBK", "UTF-8", $post_title);
$post_title=mb_convert_encoding($post_title, "UTF-8"); if (!mysql_query("set names utf8",$con) || !mysql_query("SET CHARACTER_SET_CLIENT=utf8",$con) || !mysql_query("SET CHARACTER_SET_RESULTS=utf8",$con)) die('Could not set names utf8: ' . mysql_error());
最后尝试了一种办法解决了问题:
if (!mysql_query("set names GBK",$con) || !mysql_query("SET CHARACTER_SET_CLIENT=GBK",$con) || !mysql_query("SET CHARACTER_SET_RESULTS=GBK",$con)) die('Could not set names GBK: ' . mysql_error());