将UTF-8转换为简体中文(GB2312)

时间:2010-05-18 09:14:00

标签: c# encoding

有没有办法在C#中将UTF-8字符串转换为简体中文(GB2312)。非常感谢任何帮助。

此致 Jyothish George

2 个答案:

答案 0 :(得分:8)

首先要注意的是.NET中没有“UTF-8字符串”这样的东西。 .NET中的所有字符串都是UTF-16。但是,.NET提供了Encoding类,允许您将二进制数据解码为字符串,并在以后重新编码。

Encoding.Convert可以将表示使用一种编码编码的文本的字节数组转换为具有使用不同编码编码的相同文本的字节数组。这就是你想要的吗?

或者,如果您已有字符串,则可以使用:

byte[] bytes = Encoding.GetEncoding("gb2312").GetBytes(text);

如果您能提供更多信息,那将会有所帮助。

答案 1 :(得分:0)

试试这个;

public string GB2312ToUtf8(string gb2312String)
{
    Encoding fromEncoding = Encoding.GetEncoding("gb2312");
    Encoding toEncoding = Encoding.UTF8;
    return EncodingConvert(gb2312String, fromEncoding, toEncoding);
}

public string Utf8ToGB2312(string utf8String)
{
    Encoding fromEncoding = Encoding.UTF8;
    Encoding toEncoding = Encoding.GetEncoding("gb2312");
    return EncodingConvert(utf8String, fromEncoding, toEncoding);
}

public string EncodingConvert(string fromString, Encoding fromEncoding, Encoding toEncoding)
{            
    byte[] fromBytes = fromEncoding.GetBytes(fromString);
    byte[] toBytes = Encoding.Convert(fromEncoding, toEncoding, fromBytes);

    string toString = toEncoding.GetString(toBytes);
    return toString;
}

source here