我从不同的网站上获取了一些内容,其中一些内容会发送此内容类型标题:
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}}
答案 0 :(得分:0)
将数据库排序规则设置为utf8_unicode_ci
(phpMyAdmin>选择数据库>操作>排序规则)。这种字符编码可以处理比latin1更广泛的“异国情调”字符。
您可能需要再次使用狡猾的字符重新插入内容。
自从我的数据库使用此排序规则以及在HTML文档中使用正确的UTF-8字符集元标记以来,我从未遇到过狡猾的字符显示问题:
<meta charset="utf-8">
这两项行动相结合应该可以解决问题。