我有一些特殊字符的位置:
http://209.141.56.244/test/char.php特殊字符显示为?标志着
但是当我通过AJAX抓住这个文件在这里,他们显示为回来吗?标记:
http://209.141.56.244/test/char.html
这些字符应该是“ISO-8859-1西方”,但切换浏览器的编码,以任何选项没有帮助。
这是为什么,我该如何解决?
我有一些特殊字符的位置:
http://209.141.56.244/test/char.php特殊字符显示为?标志着
但是当我通过AJAX抓住这个文件在这里,他们显示为回来吗?标记:
http://209.141.56.244/test/char.html
这些字符应该是“ISO-8859-1西方”,但切换浏览器的编码,以任何选项没有帮助。
这是为什么,我该如何解决?
您的服务器发送的Ajax响应为text/html
,这会使浏览器采用UTF-8(这是默认设置),但您的数据本身不是UTF-8。
发送Ajax响应为text/html; Charset=Windows-1252
(你不是真的在使用ISO-8859-1),它应该可以工作。
header('Content-Type: text/html; Charset=Windows-1252');
PS:将浏览器切换到另一个字符集并没有帮助,因为这只会影响页面本身。后续的Ajax响应仍然根据其各自的头文件进行解码。
您的页面返回text/html
为Content-Type
,因此浏览器(和ajax脚本)使用当前上下文给出的默认编码来解释它们。
在php中,您可以使用header函数为html版本强制编码,您应该使用apache配置文件(假设您使用apache,否则请参阅您的web服务器文档)。
http://www.w3.org/International/O-HTTP-charset说
这是永远标签网页文件明确很重要的。 HTTP 1.1表示默认字符集是ISO-8859-1。但在其他编码中也有许多未标记的文档,因此当没有明确的字符集参数 参数时,浏览器使用 阅读器的首选编码。
在同一页面
阿帕奇。这可以通过AddCharset(Apache 1.3.10和更高版本) 或AddType指令,目录或单个资源 (文件)完成。使用AddDefaultCharset(Apache 1.3.12和更高版本),可以设置整个服务器的默认字符集。欲了解更多 信息,请参阅Setting 'charset' information in .htaccess.
检查物品的代码转换像UTF-8 ISO,这看起来像一个双解码。 –
我不会否认我的html非常混乱,不符合标准,当我有机会时我会解决这个问题。 @Jared将.html设置为utf-8没有帮助 – dukevin
给utf-8一个机会 - 这并不复杂; ) –