我有一個查詢字符串,其參數值包含挪威字符å
編碼爲%e5
。該頁面包含一個帶有操作屬性的表單,該表單由ASP.Net自動填充。當URL輸出到所述屬性時,它將以完整的兩字節編碼打印:%u00e5
。回發後損壞的編碼
回覆此內容在調試代碼時似乎沒有問題。然而,頁面實際上做了重定向到本身(某些其他原因),並重定向位置頭看起來是這樣的:Location: /myFolder/MyPage.aspx?Param1=%C3%A5
所以%e5
已被翻譯爲%C3%A5
這在某種程度上打破了輸出。
在HTML文本中,通過HttpUtility.HtmlEncode輸出的破損字符看起來像Ã¥
。
整個Web應用程序都是ISO8859-1編碼的。
PS。在發佈表單之前,在action屬性中從輸出%u00e5
中刪除u00時,所有內容都可以很好地輸出。但錯誤似乎是從%e5
到%C3%A5
的翻譯。 (當然,自我重定向,但這是另一回事。)
任何指針?
這是不是一個錯誤,'%C3%A5'只是URL編碼的UTF-8版本。錯誤在於轉換爲HTML:URL中的每個編碼的UTF-8序列必須轉換回一個Unicode代碼點,然後進行HTML編碼。 – Philipp 2010-07-05 16:18:52
實際上,根據http://www.w3schools.com/tags/ref_urlencode.asp,對於'å'來說,當它是'%e5'時,URL編碼似乎是正確的。似乎問題在於重定向IIS輸出utf-8編碼的'location'頭,即'%e5'被轉換成'%c3%a5' – Polymorphix 2010-07-06 11:30:13