我正在更改网站以使用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标头设置为UTF-8 + HTML内容类型设置为UTF-8
正如预期的那样,它暗示一切都在使用UTF-8,然而,它打破了javascript包含......它也只打破了FireFox上的js包含。我在IE,Chrome和Opera上测试了这个配置,它运行正常。出于这个原因,我开始认为FireFox可能在这里有问题,这是浏览器中的一个错误(虽然FireFox的简单修复是将chartset ='iso-8859-1'添加到脚本标记中)。
HTTP标头设置为iso-8859-1 + HTML内容类型设置为UTF-8
我总是认为HTTP标头应该覆盖HTML标头中定义的任何不一致的字符集。但是,似乎JS包含侦听HTTP字符集...而发布数据时忽略HTTP标头并转而侦听HTML字符集!?
任何人都可以解释原因,是否应该以这种方式发生,或者它可能是FireFox 17.0.1中的错误?
答案 0 :(得分:-1)
如果您可以控制缓冲,请使用http://php.net/manual/en/function.utf8-encode.php else,只需更改Javascript并将其设为UFT-8。
关于这个问题...... php标题控制着服务器发送的输出,所以PHP会改变内容。 META标签只是浏览器的信息“小心,这是UTF-8”。