php - 影响 JS 包含的 HTTP 与 HTML 字符集

标签 php http character-encoding header

我正在更改网站以使用 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/

相关文章:

azure - 将元数据添加到 CloudBlob 时出现无效字符异常

http - 从 golang 中的网络调用中读取非 utf8 编码的数据

php - 使用或不使用 PHP 的 native gettext 与自建的原因是什么?

php - 与以下代码有点混淆

http - 使用 http 或更好的 https 的项目类型?

http - 可以在 'some' 子域之间共享 cookie 吗?

php - 如何知道php文件是从源代码加载的

php - 如何使用 php for 循环增加 div id?

c - 解析 HTTP header 的子集以识别主机 Web 地址

mysql - 中文字符的 Unicode 字符问题