c#中的Unicode转换
我试图在字符串上分配Unicode,但它返回“Привет”字符串为“ПривÐμÑ”,但我需要“Привет”,我通过以下函数进行转换。
public string Convert(string str) { byte[] utf8Bytes = Encoding.UTF8.GetBytes(str); str = Encoding.UTF8.GetString(utf8Bytes); return str; }
我该怎么做才能解决这个问题,以便返回“Привет”。
П
是Unicode字符0x041F ,其UTF-8编码是0xD0 0x9F
导致П
。
由于函数只返回输入参数,正如已经讨论过的评论者所说,我得出的结论是你的原始输入字符串实际上是UTF-8,并且你想将它转换为原生.Net字符串。
原始字符串来自哪里?
不要将输入读入C# string
,而是将代码更改为读取byte[]
,然后调用Encoding.UTF8.GetString(inputUtf8ByteArray)
。
我尝试下面的代码,这些是我的结果:
string test="Привет"; byte[] utf8Bytes = Encoding.UTF8.GetBytes(test); String str1 = Encoding.Unicode.GetString(utf8Bytes); String str2 = Encoding.UTF8.GetString(utf8Bytes);
输出str1 =鿐胑룐닐뗐苑
输出str2 =Привет