Php Firefox/Chrome/LAMP:UTF-8-无效字符

Php Firefox/Chrome/LAMP:UTF-8-无效字符,php,html,firefox,google-chrome,utf-8,Php,Html,Firefox,Google Chrome,Utf 8,我试图将一个网站转换为UTF-8。为此,我将PHP文件转换为UTF-8,添加了头('Content-Type:text/html;charset=UTF-8'),将添加到html头,将mysql表内容转换为UTF-8(ALTER…),并将mysql连接编码设置为UTF-8 现在,一切似乎都很好,但有时IE8、Firefox和Chrome也会出现� 而不是德国umlauts。IE9根本没有显示这个问题 刷新后,问题得到解决,但经过一段时间或几次刷新后� 再次出现 有什么想法吗?这种行为通常是由IE

我试图将一个网站转换为UTF-8。为此,我将PHP文件转换为UTF-8,添加了
头('Content-Type:text/html;charset=UTF-8')
,将
添加到html头,将mysql表内容转换为UTF-8(ALTER…),并将mysql连接编码设置为UTF-8

现在,一切似乎都很好,但有时IE8、Firefox和Chrome也会出现� 而不是德国umlauts。IE9根本没有显示这个问题

刷新后,问题得到解决,但经过一段时间或几次刷新后� 再次出现


有什么想法吗?

这种行为通常是由IE的怪癖模式引起的。如果您的页面不是有效的HTML,浏览器可能会返回到quirksmode,您可以选中此项,按F12键以显示开发者工具栏

如果显示的模式是quirksmode,您可以通过编写有效的HTML来解决问题。有离线和可用的

如果显示的模式与浏览器匹配,则可以使用查找页面编码问题

编辑:

在使用连接对象之前,还要确保设置了它的编码。您写过将MySQL连接设置为utf-8,但没有写下如何实现

// tells the mysqli connection to deliver UTF-8 encoded strings.
$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
$db->set_charset('utf8');
好的,明白了

问题是,mysql客户端编码被嵌入式Ad服务器(OpenX)更改

现在,在执行了“view_local”之后,我将字符集设置回UTF-8,现在一切似乎都好了


感谢您的支持,帮助我找到了这个问题的根源

问题不仅出现在IE.@looper中-你是对的,我错过了它,但在这种情况下,我们可以使用提到的W3检查器,它可以发现编码问题。你能再次检查所提供的编码是否真的是UTF-8吗?您可以在Firefox中通过右键单击页面,然后“查看页面信息”来完成此操作。