c#编码中的一个奇怪的事情
发布时间:2020-12-16 00:21:38 所属栏目:百科 来源:网络整理
导读:我将字节数组转换为字符串,并将此字符串转换为字节数组. 这两个字节数组是不同的. 如下: byte[] tmp = Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(b)); 假设b是一个字节数组. b[0]=3,b[1]=188,b[2]=2 //decimal system 结果: tmp[0]=3,tmp[1]=63,t
我将字节数组转换为字符串,并将此字符串转换为字节数组.
这两个字节数组是不同的. 如下: byte[] tmp = Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(b)); 假设b是一个字节数组.
结果:
这就是我的问题,它有什么问题? 解决方法
ASCII仅为7位,因此其他无效.
By default it uses
? to replace any invalid bytes and that’s why you get a ? .
对于8位字符集,您应该寻找Extended ASCII(后来定义为“ISO 8859-1”)或code page 437(通常与扩展ASCII混淆,但实际上并非如此). 您可以使用以下代码: Encoding enc = Encoding.GetEncoding("iso-8859-1"); // For CP437,use Encoding.GetEncoding(437) byte[] tmp = enc.GetBytes(enc.GetString(b)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |