本文介绍了ASCIIEncoding.ASCII.GetBytes() 返回意外值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这个 C# 代码...
string s = "u00C0";byte[] bytes = ASCIIEncoding.ASCII.GetBytes(s);Trace.WriteLine(BitConverter.ToString(bytes));
产生以下输出:
3F
为什么输出不是C0?
解决方案
因为 u00c0
不是 ASCII(0-127 范围).结果,它被编码为问号 - ?
(0x3F).
请参阅关于 ASCIIEncoding 的 MSDN 文章:>
ASCIIEncoding 对应于 Windows 代码页 20127.因为 ASCII 是 7 位编码,ASCII 字符被限制为最低 128 个 Unicode 字符,从 U+0000 到 U+007F.如果您使用 Encoding.ASCII 属性或 ASCIIEncoding 构造函数返回的默认编码器,则在执行编码操作之前,该范围之外的字符将替换为问号 (?).
This C# code...
string s = "u00C0";
byte[] bytes = ASCIIEncoding.ASCII.GetBytes(s);
Trace.WriteLine(BitConverter.ToString(bytes));
produces the following output:
3F
Why is the output not C0?
解决方案
Because u00c0
is not ASCII ( 0-127 range). As result it is encoded as if it is question mark - ?
(0x3F).
See MSDN article on ASCIIEncoding:
这篇关于ASCIIEncoding.ASCII.GetBytes() 返回意外值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!