特殊字符显示为 ?标记

发布于 2024-12-02 19:51:57 字数 352 浏览 1 评论 0原文

我这里有一些特殊字符:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

街角迷惘 2024-12-09 19:51:57

您的服务器以 text/html 形式发送 Ajax 响应,这使浏览器采用 UTF-8(默认值),但您的数据本身不是 UTF-8。

text/html 形式发送 Ajax 响应; Charset=Windows-1252 (您并没有真正使用 ISO-8859-1),它应该可以工作。

header('Content-Type: text/html; Charset=Windows-1252');

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.

header('Content-Type: text/html; Charset=Windows-1252');

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.

回眸一笑 2024-12-09 19:51:57

您的页面返回 text/html 作为 Content-Type,因此浏览器(和 ajax 脚本)使用当前上下文给定的默认编码来解释它们。

在 php 中,您可以使用 header 函数强制编码您应该使用的 html 版本使用 apache 配置文件(假设您使用的是 apache,否则请参阅您的网络服务器文档)。

http://www.w3.org/International/O-HTTP-charset

始终明确地标记 Web 文档非常重要。 HTTP协议
1.1 表示默认字符集是 ISO-8859-1。但也有
许多其他编码的未标记文档,因此浏览器使用
当没有明确的字符集时读者的首选编码
参数。

来自同一页面

阿帕奇。这可以通过 AddCharset 来完成(Apache 1.3.10 及更高版本)
AddType 指令,用于目录或单个资源
(文件)。使用 AddDefaultCharset (Apache 1.3.12 及更高版本),它是
可以为整个服务器设置默认字符集。了解更多
信息,请参阅在中设置“字符集”信息的文章
.htaccess。

Your page return text/html as Content-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

It is very important to always label Web documents explicitly. HTTP
1.1 says that the default charset is ISO-8859-1. But there are too
many unlabeled documents in other encodings, so browsers use the
reader's preferred encoding when there is no explicit charset
parameter.

from the same page

Apache. This can be done via the AddCharset (Apache 1.3.10 and later)
or AddType directives, for directories or individual resources
(files). With AddDefaultCharset (Apache 1.3.12 and later), it is
possible to set the default charset for a whole server. For more
information, see the article on Setting 'charset' information in
.htaccess.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文