1

所以我得到了一个使用 ISO-8859-1 编码的网站,我无法改变它。我想确保我在网站上输入到 Web 应用程序的内容得到正确解析。解析器逐个字符地工作。我也无法更改解析器,我只是在编写文件供它处理。我告诉应用程序在解析后显示的文件中的内容包含 Unicode 字符(或者至少我假设是这样,即使它们是由映射到 CP437 的 Windows Alt 代码生成的)。由于解析器的逐字符操作,使用实体不是一个选项。解析器在输出时转义的唯一字符是对标记敏感的字符,例如与符号、小于和大于符号。我会继续进行,看看它是什么样子,但输出只能在发布时看到,

所以,长话短说,如果我告诉一个站点在一个带有元标记的站点上输出 ▼ÇÑ¥☺☻ 并声明它应该使用 ISO-8859-1,浏览器会自动检测 Unicode 并显示它还是会它从字面上将其翻译为 ISO-8859-1 并获得一组不同的字符?

更新:我在http://doorstop.csh.rit.edu/home/testing创建了一个临时测试站点,我在 Notepad++ 中使用没有 BOM 的 UTF-8 制作了测试文件,但使用了将编码设置为 ISO 的元标记-8859-1。

4

2 回答 2

2

如果您将UTF-8发送到被告知期望ISO-8859-1的东西,那么是的,您将获得Mojibake :(

考虑一个 UTF-8 序列是简单地用一个 8 位 char 和高位集(即 char 值 > 127)引入的。期望一个简单的 8 位字符编码的东西如何决定一个特定的序列应该被解释为 UTF-8 而不是它被告知使用的编码?

于 2010-05-29T07:00:30.517 回答
1

解析器在输出时转义的唯一字符是对标记敏感的字符,例如与符号、小于和大于符号。

ISO-8859-1之外的任何内容都可能导致问题。编码为 ISO-8859-1 的 HTML 可以显示像 ▼☺☻ 这样的字符,但只能通过将它们转义为▼☺☻. 否则,它们只是在编码范围之外。

ISO-8859-1 支持字符ÇÑ¥,在正确实施的系统中不应引起问题。

解析器是否可用于在显示之前正确解析文件取决于其实现以及它及其 Web 容器是否尊重您可能发送的任何编码元数据。

Unicode 是一种受多种编码支持的字符集。例如,编码为 UTF-8 的 U+263a ☺ 成为e2 98 ba如果被视为 ISO-8859-1 将被解码为 â 的字节。

于 2010-05-29T07:35:17.063 回答