将中文字符转换为其他字符集

时间:2017-07-26 16:57:37

标签: c# string

我有这个字符串:ç²¾é¸ç å¯¶ä½?å?/é»?ké?? 我想将其转换为:作品/黃k金

我已经使用了很多方法对其进行解码,但没有成功。我确切地说这个字符串是URL的一部分。服务器通过301 redirect (in the location header)发送给我,我想解码它以解析网址。

以下是我一直在尝试的内容:

string text = "ç²¾é¸ç å¯¶ä½?å?/é»?ké??";
string decoded = System.Web.HttpUtility.UrlDecode(text);

我也试过这种方法,但没有成功:

public static string HtmlEncode(string text)
    {
        string result;
        using (StringWriter sw = new StringWriter())
        {
            var x = new HtmlTextWriter(sw);
            x.WriteEncodedText(text);
            result = sw.ToString();
        }
        return result;

    }

标题给了我一个非utf8字符集(iso-8859-1),我也尝试过UTF-8转换,但没有成功......

Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;

byte[] isoBytes = iso.GetBytes(text);
byte[] utfBytes = Encoding.Convert(iso, utf8, isoBytes);
return utf8.GetString(utfBytes);

1 个答案:

答案 0 :(得分:1)

试试这个

static void Main(string[] args)
        {
            string str = "ç²¾é¸ç 寶ä½?å?/é»?ké??";    
            byte[] origBytes = new byte[str.Length];
            int i = 0;
            foreach (char c in str)
            {
                origBytes[i++] = (byte)c;
            }
            Encoding origEncoding = Encoding.GetEncoding(936);
            Encoding newEncoding = Encoding.Unicode;
            byte[] newBytes = Encoding.Convert(origEncoding, newEncoding, origBytes);
            string res = newEncoding.GetString(newBytes);
        }

输出

enter image description here