我面临着非常奇怪的问题,其中我有byte [],当我传递给Convert.UTF8.GetString(byte [] bytes)方法时,系统编码是搞乱了我的字节,只用几个特殊的字节(我在系统中用作标记)替换为三个char字符串表示形式。C#Encoding.UTF8弄乱了字节[]
[0] 70 byte
[1] 49 byte
[2] 45 byte
[3] 86 byte
[4] 49 byte
[5] 253 byte <-- Special byte
[6] 70 byte
[7] 49 byte
[8] 45 byte
[9] 86 byte
[10]50 byte
[11]253 byte <-- Special byte
[12]70 byte
[13]49 byte
[14]45 byte
[15]86 byte
[16]51 byte
当我通过上面byte []到Encoding.UTF8.GetString(字节)的方法我得到以下输出;
实际值不应该有' ',因为这意味着它没有编码并用' '代替这些特殊字节。无论如何,我可以解决这个问题,即转换为字符串并将特殊字节表示保留为单个字符。
我有以下特殊字节,我试图用作标记;
byte AM = (byte) 254
byte VM = (byte) 253
byte SM = (byte) 252
您的帮助和意见将不胜感激。
感谢,
-
Sheeraz
谢谢...我必须手动完成它,因为要求是将UTF-8编码的所有内容都编码为我的数据库仅为UTF-8。我现在我没有将任何东西转换成字符串,但只处理字节。 – SJunejo 2012-04-24 22:27:47
@SJunejo k,但请注意:您目前的策略**不是UTF-8 **。您的数据库将完全处于您的权利爆炸范围之内。 – 2012-04-24 22:30:24