2012-01-27 136 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的冗長討論。這部分意味着描述當前的瀏覽器行爲,部分是規範性的,或者至少暗示瀏覽器應該做什麼,區分這兩者並不總是那麼容易。請注意,建議的默認編碼表中的「語言環境語言」與瀏覽器語言環境相關,而不涉及網頁的語言。這是關於在沒有更好的信息可用時推斷編碼,但顯然具有不同區域設置的瀏覽器預期能夠處理它們被建議推斷的編碼。