從我讀過的東西看來,瀏覽器似乎必須在生成請求的表單的字符集中的請求中發送x-www-form-urlencoded數據。添加utf8 =✓到查詢有什麼意義?
那麼,爲什麼有些網站(例如http://www.railscasts.com)添加了?utf8 =%E2%9C%93(即?utf8 =✓)來形成?這是一種黑客行爲,可以讓事情變得更容易嗎?該頁面的字符集已經是UTF-8(我檢查了標題),所以不能保證瀏覽器將發送UTF-8?哪些瀏覽器不這樣做?根據w3schools,所有主流瀏覽器都採用從形式的接受字符集:
<form accept-charset="UTF-8">
那麼爲什麼不使用它呢?或者什麼都沒有(因爲響應指定了UTF-8)?
我做了一些調查:
在UTF-8頁,它看起來好像尋找木(U + 6728)給出:
search:%E6%9C%A8
所以它使用百分號編碼,這似乎以字節爲單位編碼任何底層字符集的十六進制編碼。那麼,這絕對有效,因爲this place說這是UTF-8編碼。這很好,但這是一個簡單的例子,我試圖將UTF-8數據發送到UTF-8頁面。
現在我們假設我有一個ISO-8859-1頁面,它有一個表單。這是一個GET表單,我決定爲一個字段輸入相同的木
。那麼,這絕對不是ISO-8859-1。因此Chrome將其編碼爲
search:木
然後將其百分比編碼爲%26%2326408%3B
。我驗證了IE 8在Windows中執行相同的操作。那麼UTF-8破解有什麼意義呢?
相關問題:Detecting the character encoding of an HTTP POST request