ASCIIEncoding.ASCII.GetBytes() 返回意外值

2024-05-10

这段 C# 代码...

string s = "\u00C0";
byte[] bytes = ASCIIEncoding.ASCII.GetBytes(s);
Trace.WriteLine(BitConverter.ToString(bytes));

产生以下输出:

3F

为什么输出不是C0?


Because \u00c0不是 ASCII(0-127 范围)。结果它被编码为问号 -? (0x3F).

请参阅 MSDN 文章ASCII编码 http://msdn.microsoft.com/en-us/library/system.text.asciiencoding.aspx:

ASCIIEncoding 对应于 Windows 代码页 20127。由于 ASCII 是 7 位编码,因此 ASCII 字符被限制为最低 128 个 Unicode 字符,从U+0000 至 U+007F。如果使用 Encoding.ASCII 属性或 ASCIIEncoding 构造函数返回的默认编码器,则字符超出该范围的在编码前用问号 (?) 替换执行操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASCIIEncoding.ASCII.GetBytes() 返回意外值 的相关文章

随机推荐