2

所以我编写了一个爬虫程序,用 charset utf8 从网站上抓取信息和数据。但是当我尝试将内容存储到 MySQL 中时,一些特殊字符(例如西班牙字母)在 MySQL 中没有正确显示。

这是我所做的:

  1. 放入header("Content-Type: text/html; charset=utf-8")PHP
  2. 将 MySQL 中的所有字符集设置为utf8-unicode-ci
  3. 连接时有$conn->query("SET NAMES 'utf8'")这个
  4. 仔细检查我解析的 html 是用 utf-8 编码的

那么这里有哪些潜在的问题呢?

4

3 回答 3

1

首先检查数据库中的数据是否存储错误,在这种情况下,问题出在您的爬虫上。否则问题出在您的演示文稿中。

为了测试这一点,我建议您使用专用的 mysql 客户端(例如命令行客户端)来检查数据。

于 2012-09-26T18:41:03.200 回答
1

也许您使用不应管理多字节字符的函数编写爬虫代码。
例如 strlen 而不是 mb_strlen。

尝试放置:

mb_internal_encoding("UTF-8");

作为你的 php coce 的第一行,然后检查你是否必须在它们各自的 mb 版本中转换一些函数。看看多字节字符串参考

作为最后的机会,您可以在将字符串插入 mysql 之前使用iconv 函数。
比如:

$utf8_string = iconv(iconv_get_encoding($string), "UTF-8", $string);

应该做的伎俩

于 2012-09-26T18:50:28.797 回答
0

我记得我在处理 UTF8 问题时不遗余力,直到我开始将它添加到我的标题中:

setlocale(LC_ALL, 'en_US.UTF-8');
于 2012-09-26T18:59:45.420 回答