html - 未能在 HTML 中指定字符集是否会导致页面定期呈现垃圾?

标签 html web-applications character-encoding iso-8859-1

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

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

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

最佳答案

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

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

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

字符编码与文档类型声明和怪异模式(兼容性)几乎没有任何关系,这与样式、框的尺寸、框的位置等更相关。

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

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

关于html - 未能在 HTML 中指定字符集是否会导致页面定期呈现垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463077/

相关文章:

html - 将文本突出显示限制在 <pre> block

html - Linux - 传输文件和创建文件的区别 - 权限

java - 当我在浏览器上显示 'view source' 时,如何确保 HTML 格式正确?

ios - 从主屏幕启动时 HTML5 IOS WebApp Canvas 不呈现

java - 如何使用 Robot Framework 处理动态元素

mysql - 得到 ??从 excel 表中获取汉字并通过 vba 导出到 mysql 时

php - 用 javascript 更改 z-index

jquery - 位置 :fixed not being appended in ie

ruby - utf8编码错误

java - 如何将字节数组解码为codePoint