我有两个带参数的 URL
http://localhost:8041/Reforge.aspx?name=CyanГ
http://localhost:8041/Reforge.aspx?name=Cyanì
在第一个 URL 中,Firefox 将最后一个字符 (Г) 编码为 %D0%93(在 UTF-8 中正确)。在第二个 URL 中,Firefox 将最后一个字符 (ì) 编码为 %EC(在 ISO-8859-1 中正确)
可以使用 web.config 中的元素将 ASP.NET MVC 配置为采用 UTF-8 或 ISO-8859-1。但是 Firefox 会根据上下文在编码之间切换。
请注意,UTF-8 可以明确地区分于 Latin-1 编码。
有没有办法教 ASP.NET MVC 使用其中一种格式解码参数值?
编辑:是否有一个类可以用来解码可以正确处理编码的原始查询字符串?注意 - Firefox 使用 UTF-8或Latin-1 编码 - 但不能同时使用两者。所以我的计划是尝试使用 UTF-8 手动解码,然后查找“无效”字符 (FFFD),如果找到 - 尝试 Latin-1 解码。
例子:
Firefox 编码如下:
- v v
http://localhost:8041/Reforge.aspx?name=ArcânisГ
Firefox turns into
http://localhost:8041/Reforge.aspx?name=Arc%C3%A2nis%D0%93`
请注意,UTF8
编码用于两个非 ASCII 字符。
- v
http://localhost:8041/Reforge.aspx?name=Arcâ
Firefox turns into
http://localhost:8041/Reforge.aspx?name=Arc%E2
请注意,ISO-8859-1
(Latin-1)编码用于非 ASCII 字符。