我在win7(x64)上安装了标准的XAMPP。在之前的一个项目中,我的MySQL编码与PHP编码不匹配,有时将HTML输出到其他编码导致了一些编码问题。因此,我决定使用UTF-8来一致地对所有内容进行编码。
我刚开始使用HTML标记就遇到了麻烦。
以下是一些设置:
- 我保存页面时使用UTF-8(没有BOM,我想) - 通过.htaccess文件设置php以UTF-8格式提供.php页面:AddCharset UTF-8 .php - HTML中有一个meta标签指定:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - 为了测试,我使用php设置header('Content-Type:text/html; charset=UTF-8');
页面显然是以utf-8格式提供的(firefox和chrome也能识别),但是任何特殊字符,如é、á或¡都只显示为�,在查看源代码时也是如此。
当删除上述编码设置时,所有字符都可以正确呈现,但是检测到的编码显示为windows-1252或ISO-8859-1,这取决于浏览器。
为什么会这样呢?我很困惑。我本应该期望相反的行为。
欢迎提出任何建议,谢谢!
我刚开始使用HTML标记就遇到了麻烦。
以下是一些设置:
- 我保存页面时使用UTF-8(没有BOM,我想) - 通过.htaccess文件设置php以UTF-8格式提供.php页面:AddCharset UTF-8 .php - HTML中有一个meta标签指定:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - 为了测试,我使用php设置header('Content-Type:text/html; charset=UTF-8');
页面显然是以utf-8格式提供的(firefox和chrome也能识别),但是任何特殊字符,如é、á或¡都只显示为�,在查看源代码时也是如此。
当删除上述编码设置时,所有字符都可以正确呈现,但是检测到的编码显示为windows-1252或ISO-8859-1,这取决于浏览器。
为什么会这样呢?我很困惑。我本应该期望相反的行为。
欢迎提出任何建议,谢谢!
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
header();
或修改apaches配置或 .htaccess 文件。这是一个愚蠢的错误,既令人恼火又令人满意。感谢你的回答和评论,Sherm! - leugim