首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASCIIEncoding.ASCII.GetBytes()返回意外的值

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

Stack Overflow用户
提问于 2013-04-12 13:00:53
回答 3查看 17.4K关注 0票数 3

这个C#代码..。

代码语言:javascript
复制
string s = "\u00C0";
byte[] bytes = ASCIIEncoding.ASCII.GetBytes(s);
Trace.WriteLine(BitConverter.ToString(bytes));

生成以下输出:

代码语言:javascript
复制
3F

为什么输出不是C0?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-12 13:04:08

因为\u00c0不是ASCII码( 0-127范围)。因此,它被编码为问号- ? (0x3F)。

请参阅ASCIIEncoding上的MSDN文章

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

票数 4
EN

Stack Overflow用户

发布于 2013-04-12 13:25:59

看起来您需要一个表示Unicode字符串的字节序列。显然,字节数将取决于编码。因为您希望C0是其中一个字节,所以它将选项范围缩小了一点。下面是UTF16LE,它当然是两个字节,因为\u00c0完全表示一个BMP字符:

代码语言:javascript
复制
string s = "\u00C0";
byte[] bytes = Encoding.Unicode.GetBytes(s);
Trace.WriteLine(BitConverter.ToString(bytes));

你应该阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky

票数 4
EN

Stack Overflow用户

发布于 2013-04-12 13:09:08

第一步:将unicode字符转换为字符串,然后将其转换为ASCII (但它是unicode)。然后,您尝试使用unicode转换器将其转换回来。

下面的示例尽一切可能使我的响应更清晰:

代码语言:javascript
复制
    static void Main(string[] args)
    {
        string s = "\u00C0";
        Console.WriteLine(s);
        byte[] bytes = ASCIIEncoding.ASCII.GetBytes(s);
        Console.WriteLine(BitConverter.ToString(bytes));
        Console.WriteLine(ASCIIEncoding.ASCII.GetString(bytes));

        Console.WriteLine("Again");
        bytes = Encoding.UTF8.GetBytes(s);
        Console.WriteLine(BitConverter.ToString(bytes));
        Console.WriteLine(Encoding.UTF8.GetString(bytes));

        Console.ReadLine();
    }

输出结果为:

代码语言:javascript
复制
A
3F
?
Again
C3-80
A

顺便说一句,BitConverter.GetBytes的定义是:

将指定字节数组的每个元素的数值转换为其等效的十六进制字符串表示形式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15963421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档