无法从UTF8转换为ASCII

时间:2015-03-31 13:52:29

标签: c# .net string utf-8 decoding

我使用了一些在线编码检测,所以他们都说

2015%2D03%2D31

由UTF8编码。

所以我使用这段代码对其进行解码并查看

2015年3月31日

但它不起作用。

private static string UTF8toASCII(string text)
        {
            System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
            Byte[] encodedBytes = utf8.GetBytes(text);
            Byte[] convertedBytes =
                    Encoding.Convert(Encoding.UTF8, Encoding.ASCII, encodedBytes);
            System.Text.Encoding ascii = System.Text.Encoding.ASCII;

            return ascii.GetString(convertedBytes);
        }

有任何线索吗?

1 个答案:

答案 0 :(得分:2)

这不是UTF-8编码的,它是URL编码的。使用UrlDecode:https://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode%28v=vs.110%29.aspx

return System.Web.HttpUtility.UrlDecode(text);

如果您的文本实际上可能包含UTF-8数据,则可以使用此版本:

return System.Web.HttpUtility.UrlDecode(Encoding.UTF8.GetBytes(text), Encoding.UTF8)