如何解码在C#中的重音url#
答
我测试了这个,发现HttpUtility.UrlDecode("%E9")
返回你提到的问号。看起来它你必须手动指定适当的编码才能正确使用%E9
编码值。
你可以试试:
HttpUtility.UrlDecode("%E9", System.Text.UnicodeEncoding.Default);
或
HttpUtility.UrlDecode("%E9", System.Text.UnicodeEncoding.UTF7);
双方应该回到你要求的字符解码。
+0
UTF-7没有在任何地方使用,它很可能在这种情况下巧合工作。 – roeland
+0
它可能不受欢迎,但这并不意味着没有人使用它;)。 –
答
对于Url解码,您应该使用UrlDecode而不是HtmlDecode。此外,由于编码值%E9
不是UTF-8
的值,因此您需要指定编码才能正常工作,并且默认情况下UrlDecode
返回使用UTF-8
解码的字符串。
加成卢卡斯的回答,您还可以使用:
HttpUtility.UrlDecode("%E9", System.Text.Encoding.GetEncoding("iso-8859-1"));
当我使用'WebUtility.HtmlEncode( “E”)',我得到:''é,不'%E9'。当我运行'HtmlDecode(“é”)时,''我得到'é'。所以我认为'HtmlDecode'不是你正在寻找的方法。 –
@ user3208848,试试'WebUtility.UrlDecode(“%C3%A9”);' – Eser
这个问题的正确答案很大程度上取决于带有重音符号的URL来自哪里。根据http://*.com/questions/912811/what-is-the-proper-way-to-url-encode-unicode-characters在网络上的标准是UTF-8,所以试图解码'“% E9“'(它不代表有效的UTF-8字符串)有点不礼貌。 – roeland