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

Php 如何确保我的所有内容都是UTF-8并修复编码问题?,php,mysql,encoding,utf-8,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,我将这些结果存储在mysql数据库中。排序规则为latin1_

我从不同的网站获得了一些内容,其中一些网站发送了以下内容类型标题:

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
,我将这些结果存储在mysql数据库中。排序规则为
latin1_swedish_ci
,这是默认设置(我使用的是XAMPP)

问题是这些文章有一些特殊的字符,比如
ëüï
,对于一些网站来说,这些字符变成了这样的
ë
,应该是
ë
,而其他的很好

我要寻找的是一个在两种情况下都能得到相同结果的解决方案,我搜索并找到了一些在两种情况下都不起作用的解决方案,如果字符串正常,它将变得混乱:

$str = "ë";

echo utf8_decode($str);
首先,我对这个问题感到抱歉,但我不得不发布它,因为我对编码一无所知,所以我该怎么做才能得到相同的结果


如果有关系,我将使用它来解析这些站点的html,并将其作为选项
array('convert_to_encoding'=>'utf-8')传递

将数据库排序规则设置为
utf8\u unicode\u ci
(phpMyAdmin>选择数据库>操作>排序规则)。这种字符编码可以处理比拉丁1更广泛的“外来”字符

您可能需要再次重新插入带有不可靠字符的内容

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


这两个操作结合起来应该可以解决这个问题。

Um,看起来很简单:确保从web获取数据和将数据插入数据库之间是UTF-8。显然,当您获取站点时,您知道编码(在现实世界中,您可以知道字节流的编码)。@delnan因此,如果我的字符串包含
ë
,在将其插入数据库之前,我应该做些什么,当前它是按原样显示的,而不是按
ë
显示的,谢谢。请确保您的php.ini具有默认字符集=utf-8,或者在脚本的开头使用
ini\u集(“默认字符集”,“utf-8”)进行设置
Read:@Peter在Python脚本中,首先从它的任何编码中解码,然后用UTF-8编码。