2014-01-15 64 views
3
byte[] newBytes = new Byte[] { 169 }; 
string string1 = System.Text.Encoding.UTF8.GetString(newBytes, 0, newBytes.Length); 

在上面的程序中,我期望string1具有版权符号©的值。为什么我的c#代码不能识别版权符号?

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

enter image description here

我有什么错?

+0

参见:http://stackoverflow.com/questions/644785/is-it-possible-to-get-a-copyright- symbol-in-c-sharp-console-application –

+2

错误的编码,即不是utf-8。 Encoding.Default或Encoding.GetEncoding(1252)有工作的可能性。 –

回答

7

UTF8需要多字节编码大于127的特征点。如果你运行的反向,你就会明白,它预计:

System.Text.Encoding.UTF8.GetBytes("©"); // { 194, 169 } 

试试这个:

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

如果你绝对要使用原始字节数组,你需要选择不同的编码。例如,Windows-1252编码使用一个单一的字节来编码版权符号:

byte[] newBytes = new Byte[] { 169 }; 
var encoding = Encoding.GetEncoding(1252); 
string string1 = encoding.GetString(newBytes, 0, newBytes.Length); // "©" 
相关问题