【发布时间】:2011-07-23 15:23:27
【问题描述】:
我在 win7 (x64) 上安装了标准 XAMPP。 在过去的项目中遇到了编码问题,其中 mysql 编码与 php 编码不匹配,而 php 编码有时会以其他编码输出 html,因此我决定始终使用 utf-8 对所有内容进行编码。
我刚刚开始使用 html 标记,并且已经遇到了麻烦。
- 我的页面是使用 utf-8 保存的(没有 BOM,我认为)
//更新:事实证明并非如此。该文件实际上是用ISO_8859-1保存的。由于 Sherm Pendleys 的回答,我后来发现了这一点。我不得不返回并将我的项目设置(设置为“ISO-8859-1”)更改为所需的“UTF-8”。 - php 设置为每个 .htaccess 以提供 utf-8 中的 .php 页面:
AddCharset UTF-8 .php - html 有一个元标记指定:
<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
【问题讨论】:
标签: php html character-encoding xampp special-characters