C# 为什么';我的c代码不能识别版权符号吗?

C# 为什么';我的c代码不能识别版权符号吗?,c#,unicode,utf-8,C#,Unicode,Utf 8,在上面的程序中,我希望string1具有版权符号©的值 但我得到了一些其他值(可能是一些垃圾),如下所示 哪里出错了?需要多个字节来编码大于127的字符点。如果反向运行,您将看到它所期望的: byte[] newBytes = new Byte[] { 169 }; string string1 = System.Text.Encoding.UTF8.GetString(newBytes, 0, newBytes.Length); 试试这个: System.Text.Encoding.UTF

在上面的程序中,我希望string1具有版权符号©的值

但我得到了一些其他值(可能是一些垃圾),如下所示

哪里出错了?

需要多个字节来编码大于127的字符点。如果反向运行,您将看到它所期望的:

byte[] newBytes = new Byte[] { 169 };
string string1 = System.Text.Encoding.UTF8.GetString(newBytes, 0, newBytes.Length);
试试这个:

System.Text.Encoding.UTF8.GetBytes("©"); // { 194, 169 }
如果必须使用原始字节数组,则需要选择不同的编码。例如,编码使用单个字节对版权符号进行编码:

byte[] newBytes = new Byte[] { 194, 169 };
string string1 = System.Text.Encoding.UTF8.GetString(newBytes, 0, newBytes.Length);

请参阅:错误的编码,这不是utf-8。Encoding.Default或Encoding.GetEncoding(1252)有成功的几率。
byte[] newBytes = new Byte[] { 169 };
var encoding = Encoding.GetEncoding(1252);
string string1 = encoding.GetString(newBytes, 0, newBytes.Length); // "©"