我有一个查询字符串,其参数值包含挪威字符å
编码为%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