C# c语言中的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; } 为了解决此问题,我可以做些什么来返回“ППцццц”。我尝试了以下代码,这些是我的结果:

我试图在字符串上分配Unicode,但它将“ППцццццÐÐÐÐÐцÐÐцÐÐÐцÐцāā

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(文件名),它成功了!!