我正在更改一个网站以使用来自 iso-8859-1 的 UTF-8 字符集。
当我改变这个:
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1' />
至
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
一切似乎都可以正常工作,并且发布表单以 UTF-8 格式发送数据。完美的。
但是当我设置这个
<?php header('Content-Type: text/html; charset=utf-8'); ?>
javascript 包括我没想到的中断。显然,他们中有一些第 3 方代码使用 iso-8859-1 编码中的字符,这些字符不会正确更改为 utf-8。所以修复 javascript 代码本身很容易。
HTTP 标头设置为 UTF-8 + HTML 内容类型设置为 UTF-8
- 中断 javascript 包括
- 影响发布表单数据的编码
正如预期的那样,它暗示一切都在使用 UTF-8,但是,它破坏了 javascript 包含......它也只破坏了 FireFox 上的 js 包含。我在 IE、Chrome 和 Opera 上测试了这个配置,它运行良好。出于这个原因,我开始认为可能是 FireFox 有问题,这是浏览器中的一个错误(尽管 FireFox 的一个简单修复是将 chartset='iso-8859-1' 添加到脚本标签)。
HTTP 标头设置为 iso-8859-1 + HTML 内容类型设置为 UTF-8
- 不影响 javascript 包含
- 但确实会影响发布表单数据的编码
我一直认为 HTTP 标头应该覆盖 HTML 标头中定义的任何不一致的字符集。但是,似乎 JS 包括侦听 HTTP 字符集...而发布数据时忽略 HTTP 标头并侦听 HTML 字符集!?
任何人都可以解释为什么以及它应该以这种方式发生还是可能是 FireFox 17.0.1 中的错误?