所以我编写了一个爬虫程序来从字符集utf8的网站上抓取信息和数据。但是当我尝试将内容存储到 MySQL 中时,一些特殊字符(例如西类牙语字母)在 MySQL 中无法正确显示。
这是我所做的:
- 将
header("Content-Type: text/html; charset=utf-8")
放入 PHP - 将MySQL中的所有字符集设置为
utf8-unicode-ci
- 在连接时有
$conn->query("SET NAMES 'utf8'")
- 仔细检查我解析的 html 是否采用 utf-8 编码
那么这里有哪些潜在的问题呢?
最佳答案
也许您使用不应该管理多字节字符的函数来编写爬网程序。
例如 strlen 而不是 mb_strlen。
尝试放置:
mb_internal_encoding("UTF-8");
作为 php coce 的第一行,然后检查是否必须在各自的 mb 版本中转换某些函数。 看看multibyte string reference
作为最后一次机会,您可以玩 iconv function就在将字符串插入 mysql 之前。
例如:
$utf8_string = iconv(iconv_get_encoding($string), "UTF-8", $string);
应该可以解决问题
关于php - UTF8 编码的字符串在 MySQL 中无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607995/