8

我正在尝试在字符串上分配 Unicode,但它返回“Привет”字符串为“Привет”但我需要“Привет”,我正在通过以下函数进行转换。

public string Convert(string str)
{
    byte[] utf8Bytes = Encoding.UTF8.GetBytes(str);
    str = Encoding.UTF8.GetString(utf8Bytes);
    return str;
}

我能做些什么来解决这个问题以返回“Привет”。

4

2 回答 2

8

П是 Unicode 字符0x041F,其 UTF-8 编码0xD0 0x9F导致П.

由于该函数仅返回输入参数,正如评论者已经讨论过的那样,我得出结论,您的原始输入字符串实际上是 UTF-8,并且您希望将其转换为本机 .Net 字符串。

原始字符串来自哪里?

Instead of reading the input into a C# string, change your code to read a byte[], and then call Encoding.UTF8.GetString(inputUtf8ByteArray).

于 2013-01-28T11:12:10.420 回答
4

我尝试了下面的代码,这些是我的结果:

        string test="Привет";
        byte[] utf8Bytes = Encoding.UTF8.GetBytes(test);

        String str1 = Encoding.Unicode.GetString(utf8Bytes);
        String str2 = Encoding.UTF8.GetString(utf8Bytes);

str1=鿐胑룐닐뗐苑的输出

str2=Привет 的输出

于 2013-01-28T10:57:24.990 回答