如何解码在C#中的重音url#

问题描述:

我一直在尝试解码%E9(é)。如何解码在C#中的重音url#

WebUtility.HtmlDecode("%E9") 

不起作用。 它把一个?签署而不是é。

+0

当我使用'WebUtility.HtmlEncode( “E”)',我得到:''é,不'%E9'。当我运行'HtmlDecode(“é”)时,''我得到'é'。所以我认为'HtmlDecode'不是你正在寻找的方法。 –

+0

@ user3208848,试试'WebUtility.UrlDecode(“%C3%A9”);' – Eser

+0

这个问题的正确答案很大程度上取决于带有重音符号的URL来自哪里。根据http://*.com/questions/912811/what-is-the-proper-way-to-url-encode-unicode-characters在网络上的标准是UTF-8,所以试图解码'“% E9“'(它不代表有效的UTF-8字符串)有点不礼貌。 – roeland

我测试了这个,发现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"));