Php UTF8编码的字符串在MySQL中未正确显示
因此,我编写了一个爬虫程序,用字符集utf8从网站上抓取信息和数据。但当我试图将内容存储到MySQL中时,一些特殊字符(如西班牙语字母)在MySQL中没有正确显示 以下是我所做的:Php UTF8编码的字符串在MySQL中未正确显示,php,mysql,html,character-encoding,Php,Mysql,Html,Character Encoding,因此,我编写了一个爬虫程序,用字符集utf8从网站上抓取信息和数据。但当我试图将内容存储到MySQL中时,一些特殊字符(如西班牙语字母)在MySQL中没有正确显示 以下是我所做的: 在PHP中放置标题(“内容类型:text/html;charset=utf-8”) 将MySQL中的所有字符集设置为utf8 unicode ci 连接时进行$conn->query(“设置名称'utf8'”)此操作 仔细检查我解析的html是否以utf-8编码 那么这里有哪些潜在的问题呢 首先检查数据库中的数据是否
标题(“内容类型:text/html;charset=utf-8”)
utf8 unicode ci
$conn->query(“设置名称'utf8'”)
此操作那么这里有哪些潜在的问题呢 首先检查数据库中的数据是否存储错误,在这种情况下,问题在于爬虫。否则问题就出在你的演讲上
为了测试这一点,我建议您使用专用的mysql客户端(如命令行客户端)来检查数据。也许您使用不应该管理多字节字符的函数来编写爬虫程序。
例如strlen而不是mb_strlen 试着放:
mb_internal_encoding("UTF-8");
作为php coce的第一行,然后检查是否必须在各自的mb版本中转换某些函数。
看看
这是您在将字符串插入mysql之前最后一次玩的机会。例如:
$utf8_string = iconv(iconv_get_encoding($string), "UTF-8", $string);
应该这样做我记得在处理UTF8问题时,我一直在竭尽全力,直到我开始将此添加到我的标题:
setlocale(LC_ALL, 'en_US.UTF-8');
嗨,Troleskn,我的爬虫程序使用cURL提取数据并用PHPDOM解析它。数据存储也很简单。@DanielZuo Troleskn给你的建议很好。你的解决方案有多简单并不重要,重要的是要看数据是否正确存储,以确定问题可能出现在哪里。@DanielZuo很高兴给网络一些反馈:)