MySQL中没有正确显示UTF8编码的字符串

时间:2012-09-26 18:19:42

标签: php mysql html character-encoding

所以我编写了一个爬虫程序,用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
  5. 编码

    那么这里有什么潜在的问题?

3 个答案:

答案 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');