c#中的Unicode转换

man*_*noj 6 c# unicode-string

我试图在字符串上分配Unicode但它返回"Привет"字符串为"ПривÐμÑ",但我需要"Привет",我通过以下函数进行转换.

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

我能做些什么来解决这个问题才能返回"Привет".

dev*_*vio 8

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

由于函数只返回输入参数,正如已经讨论的评论者所说,我得出的结论是你的原始输入字符串实际上是UTF-8,并且你想将它转换为原生的.Net字符串.

原始字符串来自哪里?

而不是将输入读入C#string,更改代码以读取a byte[],然后调用Encoding.UTF8.GetString(inputUtf8ByteArray).


Pet*_*r H 5

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

\n\n
        string test="\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82";\n        byte[] utf8Bytes = Encoding.UTF8.GetBytes(test);\n\n        String str1 = Encoding.Unicode.GetString(utf8Bytes);\n        String str2 = Encoding.UTF8.GetString(utf8Bytes);\n
Run Code Online (Sandbox Code Playgroud)\n\n

str1=\xe9\xbf\x90\xe8\x83\x91\xeb\xa3\x90\xeb\x8b\x90\xeb\x97\x90\xe8\x8b\x91 的输出

\n\n

str2的输出=\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82

\n