我在win7(x64)上安装了标准XAMPP。在过去的项目中遇到了编码方面的麻烦,其中mysql编码与php enconding不匹配,而php enconding有时又以其他编码形式输出html,因此,我决定始终使用utf-8对所有内容进行编码。
我刚刚开始使用html标记,并且已经遇到了麻烦。
我的页面是使用utf-8保存的( 我认为 没有BOM ) // update:事实并非如此。 该文件实际使用保存ISO_8859-1。由于Sherm Pendleys的回答,我后来发现了这一点。我必须返回并将项目设置(设置为“ ISO-8859-1”)更改为所需的“ UTF-8”。
ISO_8859-1
通过.htaccess将php设置为在utf-8中提供.php页面,其中包括: AddCharset UTF-8 .php
AddCharset UTF-8 .php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
header('Content-Type:text/html; charset=UTF-8');
该页面是UTF-8(Firefox和Chrome承认它是这样的),但任何特殊字符,如明显送达é,á或¡将只显示为�。在查看源代码时也是如此。
é
á
¡
�
当拖放以上所有字符提到的正确呈现的编码的设置,但为检测显示任一编码windows-1252或ISO-8859-1取决于浏览器。
windows-1252
ISO-8859-1
怎么来的?我很困惑 我本来期望完全相反的行为。 欢迎任何意见,谢谢!
编辑:希望这可以帮助更多。这是响应头(根据firebug)
HTTP/1.1 200 OK Date: Sat, 26 Mar 2011 20:49:44 GMT Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 X-Powered-By: PHP/5.3.1 Content-Length: 91 Keep-Alive: timeout=5, max=99 Connection: Keep-Alive Content-Type: text/html; charset=utf-8
当[删除]上面提到的编码设置时,所有字符都会正确显示,但是根据浏览器的不同,检测到的编码将显示windows-1252或ISO-8859-1。
那就是您真正发送的内容。项目符号列表中的任何编码设置都不会以任何方式实际修改您的输出;他们所做的只是告诉浏览器在解释您发送的内容时采用哪种编码。这就是为什么要获取这些- 您是在告诉浏览器您要发送的是UTF-8,但实际上是ISO-8859-1。