2012-01-27 135 views
3

HTTP 1.1 Accept-Charset标头允许浏览器指定它接受哪种字符编码。我的问题是:主流浏览器支持哪些字符集?

  • 对于主流浏览器,它们在Accept-Charset标头中指定了什么值?
  • 浏览器是否会指定不同Accept-Charset基于域或URL或任何其他因素的值?
  • 请问Accept-Charset标题中没有指定任何主流浏览器“容忍”字符编码吗?例如。服务器发送明确指定不同字符集的响应,或者,浏览器的charset detection检测到不同的字符集?

干杯。

+1

为什么你会使用UTF-8以外的其他东西?每个浏览器都接受它,它几乎可以处理所有的语言。 – adiabatic 2012-01-27 06:31:17

+2

这个问题不是关于我会用什么,因为它是关于“野外”发生的事情。 – 2012-01-27 06:45:44

回答

4

Accept-Charset标题取决于浏览器区域设置。我的火狐发送 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标题没有多大用处。它们是为了指定浏览器的偏好,以便服务器可以提供多种选择,但如果您希望使服务器执行此类操作,您是否真的相信浏览器会说些什么?在我的例子中,浏览器所说的所有东西(如果他们说什么的话)通过UTF-8或其他编码表示优先考虑ISO-8859-1,并且在Chrome情况下,优先于UTF-8优于其他编码,而不是ISO- 8859-1。

我从来没有看到域或URL的变化。当然,尽管可能,但这种变化没有多大意义。这是浏览器自己的环境,我们可以期待重要。

我测试过的所有浏览器都表示,通过HTTP协议,任何字符编码都是可以接受的。他们通过根本不发送Accept-Charset或在报头中包含*来完成此操作。他们实际上可以做的是一个不同的问题,浏览器中的视图→编码菜单并不一定是详尽无遗的,但它们提供了浏览器支持多少编码的一些想法。

HTML5草案包含对determining the character encoding的冗长讨论。这部分意味着描述当前的浏览器行为,部分是规范性的,或者至少暗示浏览器应该做什么,区分这两者并不总是那么容易。请注意,建议的默认编码表中的“语言环境语言”与浏览器语言环境相关,而不涉及网页的语言。这是关于在没有更好的信息可用时推断编码,但显然具有不同区域设置的浏览器预期能够处理它们被建议推断的编码。