HTTP 1.1 Accept-Charset
标头允许浏览器指定它接受的字符编码。我的问题是:
Accept-Charset
标题中指定了哪些值?Accept-Charset
值?Accept-Charset
标题中未指定的字符编码?例如。服务器发送显式指定不同字符集的响应,或者浏览器的charset detection检测到不同的字符集?干杯。
答案 0 :(得分: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情况下,除了ISO-之外,还优先考虑UTF-8而不是其他编码。 8859-1。
我从未见过域名或网址的变体。虽然当然可能,但这种变化没有多大意义。这是浏览器自己的环境,我们可以期待它。
我的测试中的所有浏览器都通过HTTP协议指示任何字符编码都是可接受的。他们通过完全不发送Accept-Charset
或在标题中包含*
来执行此操作。他们实际可以做的是一个不同的问题,浏览器中的视图→编码菜单不一定是详尽无遗的,但它们可以让我们了解浏览器可能支持的编码数量。
HTML5草案包含对determining the character encoding的冗长讨论。它部分意味着描述当前的浏览器行为,部分是规定性的或至少暗示浏览器应该做什么,并且区分这两者并不总是容易的。请注意,建议的默认编码表中的“区域设置语言”与浏览器区域设置相关,而不是与网页的语言相关。这是关于在没有更好的信息时推断编码,但显然具有不同语言环境的浏览器希望能够处理他们建议推断的编码。