所以我编写了一个爬虫程序,用charset utf8从网站上抓取信息和数据。但是当我试图将内容存储到MySQL中时,某些特殊字符(如西班牙语字母)在MySQL中无法正确显示。
这就是我所做的:
header("Content-Type: text/html; charset=utf-8")
放入PHP utf8-unicode-ci
$conn->query("SET NAMES 'utf8'")
那么这里有什么潜在的问题?
答案 0 :(得分:1)
首先检查数据是否在数据库中存储错误,在这种情况下问题出在您的爬虫上。否则问题出在您的演示文稿中。
为了测试这个,我建议您使用专用的mysql客户端(例如命令行客户端)来检查数据。
答案 1 :(得分:1)
也许您使用不应管理多字节字符的函数对您的爬虫进行编码 例如strlen而不是mb_strlen。
尝试推杆:
mb_internal_encoding("UTF-8");
作为你的php coce的第一行,然后检查你是否必须在他们各自的mb版本中转换一些函数。 看看multibyte string reference
作为最后一次机会,您可以在将字符串插入mysql之前使用iconv function 有点像:
$utf8_string = iconv(iconv_get_encoding($string), "UTF-8", $string);
应该做的伎俩
答案 2 :(得分:0)
我记得在处理UTF8问题时拔头发,直到我开始将它添加到我的标题中:
setlocale(LC_ALL, 'en_US.UTF-8');