字符串轉換注意編碼

就如同浮點數轉換會出現精度丟失一樣,字節與字符串的轉換也會出現自作聰明的結局,雖然看起來一樣,但未必 是你喜歡的那個人了

@@@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

@@@

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章