0

昨天我将一个html页面从“4.01 strict”升级到了html5。
* http://r0k.us/rock/games/CoH/HallsOfHeroes/
字符编码为iso-8859-1。http://validator.w3.org失败并且当utf-8 被指定为字符集时甚至不会解析它,显然是因为我使用了脚注字符,例如 ² 。它们位于字符集的高 128 个字节中。让我困惑的是,我一直读到 utf-8 的前 256 个字节8859-1。

有谁知道为什么页面不会验证为 utf-8 ?

4

2 回答 2

2

实际上,在 UTF-8 中只有前 128 个码点被编码为 ASCII,但 UTF-8不是ASCII,尤其是接下来的 128 个码点不同。

如果您希望文件以 UTF-8 格式提供,则需要将文件重新保存为 UTF-8。

于 2013-02-17T20:19:33.317 回答
0

字符 ²(“SUPERSCRIPT TWO”)由数字 0xb2(十进制 178)表示——但它在 8859-1 和 UTF-8 中的表示方式不同。

在 8859-1 中,它表示为值为 0xb2 的单个字节。

在 UTF-8 中,它表示为两个连续的字节,其值为 0xc2、0xb2。有关编码的说明,请参见此处

(对于包含 8 位字符的文件,8859-1 比 UTF-8 更紧凑,但它无法表示超过 255 的任何内容。UTF-8 与 ASCII 兼容,对于 7 位字符与 8859-1 兼容,对于大多数文本,并且可以表示超过一百万个不同的字符。)

仅包含 7 位字符的文件可以解释为 ASCII、8859-1 或 UTF-8。包含 8 位字符的文件不能;它必须被翻译。

如果您在安装了命令的类 Unix 系统上iconv,则:

iconv -f iso-8859-1 -t utf-8

将执行适当的翻译。

于 2013-02-17T20:23:05.140 回答