C# c语言中的Unicode转换#
我试图在字符串上分配Unicode,但它将“ППцццццÐÐÐÐÐцÐÐцÐÐÐцÐцāāC# c语言中的Unicode转换#,c#,unicode-string,C#,Unicode String,我试图在字符串上分配Unicode,但它将“ППцццццÐÐÐÐÐцÐÐцÐÐÐцÐцāā public string Convert(string str) { byte[] utf8Bytes = Encoding.UTF8.GetBytes(str); str = Encoding.UTF8.GetString(utf8Bytes); return str; } 为了解决此问题,我可以做些什么来返回“ППцццц”。我尝试了以下代码,这些是我的结果:
public string Convert(string str)
{
byte[] utf8Bytes = Encoding.UTF8.GetBytes(str);
str = Encoding.UTF8.GetString(utf8Bytes);
return str;
}
为了解决此问题,我可以做些什么来返回“ППцццц”。我尝试了以下代码,这些是我的结果:
string test="Привет";
byte[] utf8Bytes = Encoding.UTF8.GetBytes(test);
String str1 = Encoding.Unicode.GetString(utf8Bytes);
String str2 = Encoding.UTF8.GetString(utf8Bytes);
str1的输出=鿐胑룐닐뗐苑
str2=ПППППП
П
的输出为Unicode字符,其UTF-8编码为0xD0 0x9F
由于函数只返回输入参数,正如注释者已经讨论过的那样,我得出结论,您的原始输入字符串实际上是UTF-8格式的,您希望将其转换为本机.Net字符串
原始字符串来自哪里
不要将输入读入C#
字符串
,而是将代码改为读入字节[]
,然后调用Encoding.UTF8.GetString(inputf8bytearray)
查看您对该方法的结果做了什么?我很肯定问题就在那里,或者从输入中。您的代码实际上返回的正是您作为输入传递的内容,而不是Encoding.UTF8.GetBytes
后跟GetString
本质上是一个noop?UTF8与unicode不同?转换为utf8时,生成的字符串将不是unicode。您的输入字符串和期望的输出字符串是什么?这段代码似乎适合我。你在哪里读取结果值?是的,它可以工作。事实上,我发现了我自己的错误。事实上,我正在从文件中读取字符串,所以将其更改为file.ReadAllBytes(文件名),它成功了!!