本文介绍了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() 返回意外值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-02 13:27