Php 影响JS的HTTP与HTML字符集包括

Php 影响JS的HTTP与HTML字符集包括,php,http,character-encoding,header,Php,Http,Character Encoding,Header,我正在更改一个网站以使用iso-8859-1中的UTF-8字符集 当我更改此选项时: 到 这一切似乎都很好,过账表单以UTF-8格式发送数据。太好了 但是当我设置这个 <?php header('Content-Type: text/html; charset=utf-8'); ?> javascript包含了我没有预料到的中断。显然,他们的代码中有一些第三方代码使用iso-8859-1编码中的字符,这些字符不能正确更改为utf-8。因此,修复javascript代码本身非

我正在更改一个网站以使用iso-8859-1中的UTF-8字符集

当我更改此选项时:

这一切似乎都很好,过账表单以UTF-8格式发送数据。太好了

但是当我设置这个

<?php header('Content-Type: text/html; charset=utf-8'); ?>

javascript包含了我没有预料到的中断。显然,他们的代码中有一些第三方代码使用iso-8859-1编码中的字符,这些字符不能正确更改为utf-8。因此,修复javascript代码本身非常简单

HTTP头设置为UTF-8+HTML内容类型设置为UTF-8

  • 包括
  • 影响过帐表单数据的编码
正如预期的那样,它暗示一切都在使用UTF-8,然而,它打破了javascript包含。。。它也只破坏了FireFox上的js包含。我在IE、Chrome和Opera上测试了这个配置,效果很好。出于这个原因,我开始认为可能是FireFox出了问题,这是浏览器中的一个bug(尽管FireFox的一个简单修复方法是在脚本标记中添加chartset='iso-8859-1'

HTTP头设置为iso-8859-1+HTML内容类型设置为UTF-8

  • 不影响javascript包含
  • 但会影响过帐表单数据的编码
我一直认为HTTP头应该覆盖HTML头中定义的任何不一致的字符集。但是,似乎JS包含侦听HTTP字符集。。。在发布数据时,忽略HTTP头并侦听HTML字符集


有人能解释一下为什么会发生这种情况,或者它可能是FireFox 17.0.1中的一个bug吗?

如果您可以控制缓冲,使用其他方法,只需更改Javascript并使其成为UFT-8即可


关于这个问题。。。php头控制服务器发送的输出,因此php将更改内容。该META标记只是浏览器“小心,这是UTF-8”的一个信息。

到底是什么中断了什么错误消息?不要使用php标头,您可能会收到已发送错误的标头。不要担心中断,这不是问题,问题是为什么这两种不同的改变字符集的方法会影响javascript字符集,而不会影响javascript字符集。我可以自己修复javascript错误。@faridmovsumov在。。。因此,可以在任何输出之前发送标题;)您是否将文件编码设置为UTF-8?例如,有问题的PHP/js文件?这仍然不能回答“为什么HTTP头会影响JavaScript包含的编码,而HTML头不会影响它?特别是因为HTTP头应该覆盖HTML中指定的那个。”那么,你是说你的[script src=“file.js”]将有不同的内容?你怎么能检查这个?也许你通过JS从HTML内容中获得了一些元素,这就是修改过的内容。好吧,那么你的JS文件是iso-8859-1?再说一次,你怎么知道js被修改了?你能在网上发布js并在这里添加链接吗。我在我的电脑上试过一个测试,但也许你只有一些特殊的字符。JS没有改变,浏览器假设它在UTF-8中,而不是。因此,当我更改HTML文档的HTTP头时,它才会中断。我想知道为什么浏览器正在更改字符集?我无法用一种更简单的方式来解释这一点,我感到震惊。的确,这很奇怪。试试