簡體   English   中英

Facebook字符集檢測機制?

[英]Facebook charset detection mechanism?

今天,我查看了facebook.com的HTML代碼,發現了類似這樣的內容:

<input type="hidden" value="€,´,€,´,水,Д,Є" name="charset_test"/>

它在<form>...</form>重復了兩次。

知道這段代碼可能有用 - 某種服務器端客戶端字符集檢測? 據我所知,瀏覽器字符集無論如何都是在HTTP請求中傳輸的(“Accept-Charset”標題)。

知道這段代碼可能有用 - 某種服務器端客戶端字符集檢測?

顯然是這樣。

歐元符號對於字符集檢測很有用,因為有很多編碼方式:

  • E2 82 AC,UTF-8
  • Windows-1251中的88
  • 80在其他windows-125x編碼
  • ISO-8859-7,-15和-16中的A4
  • GB18030中的A2 E3
  • 在Shift-JIS中使用85 40
  • 等等

據我所知,瀏覽器字符集無論如何都是在HTTP請求中傳輸的(“Accept-Charset”標題)。

應該在HTTP Content-Type標頭中傳輸,但這並不意味着用戶代理實際上是正確的。

我猜他們在接收腳本中匹配這一點,以確保客戶端發送的請求正確編碼為UTF-8,甚至可能因為他們知道期望的字符,即可實時檢測實際編碼。

如果我沒記錯的話 - 我必須處理一次 - 在某些情況下IE6中的表單編碼存在問題。

&euro;,&acute;,€,´,水,Д,Є

我猜有些瀏覽器發送&euro; &acute;相同&acute; ´相同,

所以他們可以檢查像charset_test [0] == charset_test [2]和charset_test [1] == charset_test [3]

對於其他角色,我不知道。 水可能測試CJK。

正如Pekka所說,這是為了能夠檢測到請求字符集。 HTTP協議不提供指定請求的字符集的方法。 因此,必須依賴協議之外的約定。 通常瀏覽器是可預測的,但這個技巧是100%確定的唯一方法。

另見: http//www.phpwact.org/php/i18n/charsets

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM