为什么我的c#代码不识别版权符号?

Cur*_*ous 3 c# unicode utf-8

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

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

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

在此输入图像描述

我哪里做错了?

p.s*_*w.g 7

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

System.Text.Encoding.UTF8.GetBytes("©"); // { 194, 169 }
Run Code Online (Sandbox Code Playgroud)

试试这个:

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

如果您必须使用该原始字节数组,则需要选择不同的编码.例如,Windows-1252编码使用单个字节对版权符号进行编码:

byte[] newBytes = new Byte[] { 169 };
var encoding = Encoding.GetEncoding(1252);
string string1 = encoding.GetString(newBytes, 0, newBytes.Length); // "©"
Run Code Online (Sandbox Code Playgroud)