本文介绍了ASCIIEncoding.ASCII.GetBytes()返回意外值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

本C#code ...

This C# code...

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

产生下面的输出:

produces the following output:

3F

为什么不输出C0?

Why is the output not C0?

推荐答案

由于 \\ u00c0 不是ASCII(0-127范围内)。由于结果是EN codeD,就好像它是问号? - (0x3F的)

Because \u00c0 is not ASCII ( 0-127 range). As result it is encoded as if it is question mark - ? (0x3F).

查看 MSDN文章:

ASCIIEncoding对应于20127.在Windows code页面,因为ASCII是7位编码,ASCII字符限制为最低128统一code字,从 U + 0000至U + 007F 。如果使用默认的连接由Encoding.ASCII属性或ASCIIEncoding构造,人物的超出该范围返回codeR带有问号(?)的编码前被替换执行操作。

这篇关于ASCIIEncoding.ASCII.GetBytes()返回意外值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-19 00:39