2

我们一直遇到页面偶尔呈现为垃圾的问题,在调查该问题的过程中,我发现该网站的原始开发人员从未指定字符集或文档类型。

现在,由于大部分站点是在没有doctype的情况下开发的,并且默认在IE中以兼容模式呈现,因此添加doctype目前是不可能的。但是,我确实指定该站点应该使用字符集ISO-8859-1,希望它可以解决我们遇到的问题。

未能指定字符集会导致这些问题吗?如果是,为什么?

4

1 回答 1

2

不指定字符编码(charset)意味着浏览器和搜索引擎将不得不猜测。影响差异很大。

例如,如果内容完全是 Ascii 字符,则错误行为的几率非常小。然而,即便如此,也可能会出现问题。假设我访问了一个没有声明其编码的页面,我必须手动尝试不同的编码并最终选择 UTF-16(不太可能,但可能)。当我访问另一个页面时,只有 Ascii 编码,没有声明其编码,它将使用 UTF-16 显示,这意味着它看起来主要是中文。

一个更常见的问题是,如果文档包含非 Ascii 字符并且浏览器猜错了,您可能会看到各种各样的东西而不是一些字符:小矩形;里面有十六进制数字的小矩形;像ä这样的奇怪字符组合;符号;来自不同书写系统的字符(例如,您希望看到拉丁字母的希腊字母或西里尔字母;或其他内容。

字符编码与 doctype 声明和 quirks 模式(兼容性)几乎没有任何关系,这与样式、框的尺寸、框的位置等有关。

您应该声明的是页面上使用的实际编码。您可能需要研究创作工具和页面本身来决定可能是什么。它很可能是 ISO-8859-1,但将 UTF-8 作为创作软件生成的默认值越来越普遍。您不会在仅包含 Ascii 字符的页面上看到差异。

如果发现编码是ISO-8859-1,还是声明windows-1252比较好。原因是人们实际上可能会生成 windows-1252 编码的页面,例如从某处复制文本时。编码之间的区别在于 windows-1252 在某些代码位置具有可打印字符(如智能标点符号),为 ISO-8859-1 中的控制字符保留 - 而这些字符(C1 控件)在 HTML 中是不允许的。

于 2012-11-19T22:36:45.457 回答