微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决C#:如果一个字节是 0 到 255,那么 Encoding.UTF8.GetBytes("çõ") 怎么会返回最多 6 位的值,即 195167 和 195181?

这是我的代码

byte[] sample = Encoding.UTF8.GetBytes("çõ");
foreach (byte c in sample)
  Debug.Write(c.ToString());

我正在努力编码消息以使用 PDU 模式通过 GSM 调制解调器发送文本。编码器算法期望字节数小于 127,并且不适用于值 195167 和 195181(对于葡萄牙字母“çõ”。如果消息中仅存在 ASCII 字符,则它有效。

解决方法

呸。 Encoding.UTF8.GetBytes("çõ") 实际上每个返回 2 个字节(称为代理对)。第一个字符返回 195 和 167,而第二个字符返回 195 和 181。当使用 Debug.WriteLine 而不是 Debug.Write 时发现它。附带说明:一些葡萄牙语字母(如ç和õ)不在GSM字符集中。 GSM 集仅使用字节 0-127 作为字符。您必须将葡萄牙语消息编码为 UCS2 字符集。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。