特殊字符显示为 ?标记
我这里有一些特殊字符:
http://209.141.56.244/test/char.php
但是当我通过ajax获取这个文件时在这里,他们出现了?标记:
http://209.141.56.244/test/char.html
这些字符应该是“ISO-8859 -1 Western”,但将我的浏览器编码切换到任何选项都没有帮助。
这是为什么?我该如何解决它?
I have some special characters here:
http://209.141.56.244/test/char.php
but when I grab this file via ajax here, they show up as back ? marks:
http://209.141.56.244/test/char.html
These characters should be "ISO-8859-1 Western" but switching my browser encoding to any of the options don't help.
Why is this and how can I fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的服务器以
text/html
形式发送 Ajax 响应,这使浏览器采用 UTF-8(默认值),但您的数据本身不是 UTF-8。以
text/html 形式发送 Ajax 响应; Charset=Windows-1252
(您并没有真正使用 ISO-8859-1),它应该可以工作。PS:将浏览器切换到另一个字符集没有帮助,因为这只会影响页面本身。后续 Ajax 响应仍根据各自的标头进行解码。
Your server sends the Ajax response as
text/html
, this makes the browser assume UTF-8 (which is the default), but your data itself is not UTF-8.Send the Ajax response as
text/html; Charset=Windows-1252
(you're not really using ISO-8859-1) and it should work.PS: Switching the browser to another charset does not help because this affects the page itself only. Subsequent Ajax responses are still decoded according to their respective headers.
您的页面返回
text/html
作为Content-Type
,因此浏览器(和 ajax 脚本)使用当前上下文给定的默认编码来解释它们。在 php 中,您可以使用 header 函数强制编码您应该使用的 html 版本使用 apache 配置文件(假设您使用的是 apache,否则请参阅您的网络服务器文档)。
http://www.w3.org/International/O-HTTP-charset说
来自同一页面
Your page return
text/html
asContent-Type
, so the browser (and the ajax script) interpret them with a default encoding given by the current context.In php you can force the encoding using the header function for the html version you should use apache configuration files (assuming you're using apache, otherwise see your webserver doc).
http://www.w3.org/International/O-HTTP-charset says
from the same page