字符串转换注意编码

就如同浮点数转换会出现精度丢失一样,字节与字符串的转换也会出现自作聪明的结局,虽然看起来一样,但未必 是你喜欢的那个人了

@@@code

var bs = new byte[16]

{

120,

104,

0,

0,

0,

0,

0,

0,

32,

65,

57,

16,

132,

54,

151,

87

};

string s = Encoding.UTF8.GetString(bs);

var cs = Encoding.UTF8.GetBytes(s);

Console.WriteLine(s);

Console.WriteLine(Encoding.UTF8.GetString(cs));

Console.WriteLine(BitConverter.ToString(bs).Replace("-"," "));

Console.WriteLine(BitConverter.ToString(cs).Replace("-", " "));

Console.WriteLine(BitConverter.ToString(Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(bs))).Replace("-", " "));

 

@@@

   

输出结果

@@@code

xh?????? A9?6?W

xh?????? A9?6?W

78 68 00 00 00 00 00 00 20 41 39 10 84 36 97 57

78 68 00 00 00 00 00 00 20 41 39 10 EF BF BD 36 EF BF BD 57

78 68 00 00 00 00 00 00 20 41 39 10 3F 36 3F 57

@@@

posted @ 2020-12-11 12:19  秦秋随  阅读(253)  评论(1编辑  收藏  举报