我正在更改网站以使用 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 包含我没有预料到的中断。显然,他们中有一些第三方代码使用 iso-8859-1 编码中的字符,这些字符不会正确更改为 utf-8。因此修复 javascript 代码本身很容易。
HTTP header 设置为 UTF-8 + HTML 内容类型设置为 UTF-8
- 打破 javascript 包含
- 影响发布表单数据的编码
正如预期的那样,它暗示一切都在使用 UTF-8,但是,它破坏了 javascript 包含...它也只破坏了 FireFox 上的 js 包含。我在 IE、Chrome 和 Opera 上测试了这个配置,它工作正常。出于这个原因,我开始认为 FireFox 可能在这里有问题,这是浏览器中的错误(尽管 FireFox 的一个简单修复是将 chartset='iso-8859-1' 添加到脚本标签)。
HTTP header 设置为 iso-8859-1 + HTML 内容类型设置为 UTF-8
- 不影响 javascript 包含
- 但是会影响posting表单数据的编码
我一直认为 HTTP header 应该覆盖 HTML header 中定义的任何不一致的字符集。但是,似乎 JS 包括监听 HTTP 字符集...而发布数据时忽略 HTTP header 并改为监听 HTML 字符集!?
谁能解释为什么会这样,是否应该以这种方式发生,或者这可能是 FireFox 17.0.1 中的错误?
最佳答案
如果可以控制缓冲,请使用 http://php.net/manual/en/function.utf8-encode.php否则,只需更改 Javascript 并将其设为 UFT-8。
关于问题... php header 控制服务器发送的输出,因此 PHP 将更改内容。该 META 标记只是浏览器的一个信息“小心,这是 UTF-8”。
关于php - 影响 JS 包含的 HTTP 与 HTML 字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861847/