如何确保我的所有内容都是UTF-8并修复编码问题?

时间:2014-01-03 14:02:25

标签: php mysql encoding utf-8

我从不同的网站上获取了一些内容,其中一些内容会发送此内容类型标题:

Content-Type: text/html; charset=utf-8

和其他人

Content-Type: text/html

我使用Python脚本使用请求库批量检查编码:

for site in sites:
    r = requests.get(site)

    print r.encoding

它为某些网站和其他UTF-8打印ISO-8859-1,我将这些结果存储在mysql数据库中,排序是latin1_swedish_ci这是默认的(我正在使用XAMPP)。

问题是这些文章有é ë ü ï这样的特殊字符,对于某些网站来说,这些字符应该是ëë应该是$str = "ë"; echo utf8_decode($str); ,而其他字符的工作正常。

我正在寻找的解决方案是在两种情况下获得相同的结果,我搜索并发现一些在两种情况下都不起作用的解决方案,如果字符串没问题就会变得混乱:

array('convert_to_encoding' => 'utf-8');

首先我很抱歉这个问题,但由于我对编码一无所知,所以我不得不发帖,所以我能做些什么来获得相同的结果呢?

如果重要的话我正在使用QueryPath来解析这些网站的html,而我正在作为选项传递{{1}}

1 个答案:

答案 0 :(得分:0)

将数据库排序规则设置为utf8_unicode_ci(phpMyAdmin>选择数据库>操作>排序规则)。这种字符编码可以处理比latin1更广泛的“异国情调”字符。

您可能需要再次使用狡猾的字符重新插入内容。

自从我的数据库使用此排序规则以及在HTML文档中使用正确的UTF-8字符集元标记以来,我从未遇到过狡猾的字符显示问题:

<meta charset="utf-8">

这两项行动相结合应该可以解决问题。