c#编码中的一个奇怪的事情

c#编码中的一个奇怪的事情,第1张

概述我将字节数组转换为字符串,并将此字符串转换为字节数组. 这两个字节数组是不同的. 如下: 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, tmp[2]=2 我将字节数组转换为字符串,并将此字符串转换为字节数组.
这两个字节数组是不同的.

如下:

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,tmp[2]=2

这就是我的问题,它有什么问题?

解决方法 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));
总结

以上是内存溢出为你收集整理的c#编码中的一个奇怪的事情全部内容,希望文章能够帮你解决c#编码中的一个奇怪的事情所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存