首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTF8编码的字符串在MySQL中没有正确显示

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

Stack Overflow用户
提问于 2012-09-26 18:19:42
回答 3查看 441关注 0票数 2

因此,我已经编写了一个爬虫程序,从一个带有字符集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编码。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-26 18:50:28

也许您使用不应该管理多字节字符的函数来编写爬虫代码。

例如,strlen而不是mb_strlen。

试着放:

代码语言:javascript
复制
mb_internal_encoding("UTF-8");

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

作为最后一次机会,您可以在将字符串插入mysql之前使用凸函数。

某些东西,如:

代码语言:javascript
复制
$utf8_string = iconv(iconv_get_encoding($string), "UTF-8", $string);

应该做点什么

票数 1
EN

Stack Overflow用户

发布于 2012-09-26 18:41:03

首先要检查数据库中数据是否存储错误,在这种情况下,问题在于爬虫。否则问题就在你的演讲中。

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

票数 1
EN

Stack Overflow用户

发布于 2012-09-26 18:59:45

我记得我在处理UTF8问题时把头发拔了出来,直到我开始把这个添加到我的头上:

代码语言:javascript
复制
setlocale(LC_ALL, 'en_US.UTF-8');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12607995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档