主流浏览器支持哪些字符集?

3
HTTP 1.1中的Accept-Charset头允许浏览器指定其接受的字符编码。我的问题如下:
  • 对于主要浏览器,它们在Accept-Charset头中指定哪些值?
  • 浏览器是否会根据域、URL或其他任何因素指定不同的Accept-Charset值?
  • 主流浏览器是否“容忍”未在Accept-Charset头中指定的字符编码?例如,服务器发送显式指定不同字符集的响应,或者浏览器的字符集检测检测到不同的字符集?
谢谢。

1
为什么你会使用除UTF-8以外的编码呢?每个浏览器都支持它,而且它几乎可以处理所有的语言。 - adiabatic
2
问题不在于我会使用什么,而在于“在野外”发生了什么。 - Bryce Thomas
UTF-8 使得一些文件比它们实际需要的要大很多。 - Carl Smith
1个回答

4

Accept-Charset头取决于浏览器语言环境。我的Firefox发送的是ISO-8859-1,utf-8;q=0.7,*;q=0.7,而Chrome发送的是ISO-8859-1,utf-8;q=0.7,*;q=0.3,而IE、Opera和Safari则不发送Accept-Charset头。但是,在俄罗斯或日本等地方,可能会有其他替代ISO-8859-1的方案。

Accept-Charset头并没有太大用处。它们的作用是在服务器可以提供多种替代方案时指定浏览器的首选项,但如果您希望让您的服务器执行此类操作,您真的相信浏览器所说的吗?在我的例子中,所有浏览器(如果它们说任何话)都表达了对ISO-8859-1优于UTF-8或其他编码的偏好,并且在Chrome的情况下,还表达了对UTF-8优于ISO-8859-1以外的其他编码的偏好。

我从未见过域名或URL的变化。虽然当然可能出现这种变化,但这种变化并没有太多意义。我们可以期望的是浏览器自己的环境会起作用。

在我的测试中,所有浏览器都通过HTTP协议指示任何字符编码都是可接受的。它们这样做是通过根本不发送Accept-Charset头或在头中包含*来实现的。它们实际上可以做什么是一个不同的问题,并且浏览器中的“查看”→“编码”菜单并不一定详尽无遗,但它们提供了一些关于浏览器可能支持多少种编码的想法。

HTML5草案包含对确定字符编码的方法进行了详细讨论。它部分意味着描述当前浏览器行为,部分规范性或至少建议浏览器应该做什么,区分这两者并不总是容易的。请注意,建议的默认编码表中的“语言环境”与网页语言无关,而是与浏览器语言环境相关。这是关于在没有更好信息时推断编码的,但显然具有不同语言环境的浏览器应该能够处理它们被建议推断的编码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接