首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C#:如果一个字节是0到255,那么为什么Encoding.UTF8.GetBytes(“çó”)会返回最多6位的值,即195167和195181?

C#:如果一个字节是0到255,那么为什么Encoding.UTF8.GetBytes(“çó”)会返回最多6位的值,即195167和195181?
EN

Stack Overflow用户
提问于 2021-01-03 23:11:25
回答 1查看 24关注 0票数 0

这是我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
byte[] sample = Encoding.UTF8.GetBytes("çõ");
foreach (byte c in sample)
  Debug.Write(c.ToString());

我正在为使用PDU模式通过GSM调制解调器发送文本而对消息进行编码。编码器算法期望字节数小于127,并且不适用于值195167和195181 (对于葡萄牙语字母“çá”。如果消息中只有ASCII字符,则可以正常工作。

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 08:05:32

是啊。Encoding.UTF8.GetBytes(“çó”)实际上每个返回2个字节(称为代理对)。第一个字符返回195和167,而第二个字符返回195和181。在使用Debug.WriteLine而不仅仅是Debug.Write时发现了它。附注:某些葡萄牙语字母(如ç和ó)不在GSM字符集中。GSM set仅使用字节0-127表示字符。您必须将葡萄牙语消息编码为UCS2字符集。

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

https://stackoverflow.com/questions/65551354

复制
相关文章

相似问题

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