c# - 在我的 C# 应用程序中:如何使用 AT 命令重建从 GSM 调制解调器获取的文本消息,以显示表情符号/表情符号以及单词?
问题描述
如果收到的消息只包含单词,则没有问题。但是当消息中包含表情符号和文字时,消息就无法被理解。我认为它是某种形式的另一种格式。
例如,如果来自发件人的消息是“你好”和一个笑脸,它会在我的 C# 应用程序中显示为“00480065006C006C006F0020D83DDE00”。
我在文本模式下阅读消息,即“AT+CMGF=1”。我觉得解决的办法是用“AT+CMGF=0”(非文本模式)读取msgs来覆盖所有类型的消息,并应用一个算法来解码。这是这样做的方法吗?
我遇到的大多数关于表情的帖子都提供了关于发送表情的解决方案。我似乎无法找到接收的解决方案。
解决方案
从文本来看,它似乎是 Big Endian Unicode:
// https://stackoverflow.com/a/311179/613130
public static byte[] StringToByteArray(string hex)
{
byte[] bytes = new byte[hex.Length / 2];
for (int i = 0; i < hex.Length; i += 2) {
bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
}
return bytes;
}
接着:
var bytes = StringToByteArray("00480065006C006C006F0020D83DDE00");
var text = Encoding.BigEndianUnicode.GetString(bytes); // Hello
推荐阅读
- python - 没有值从 txt 文件写入 csv 文件
- python - 更改在终端 MacOs Catalina 中使用的 python
- python - 按索引对熊猫数据框进行排序
- python - sklearn.preprocessing.scale 是如何工作的?
- c++ - 如何从具有最大值的序列中找到起始数字
- c# - 异步和等待,任务和线程之间的区别?
- html - 在按钮背景中对齐图像
- android - 我想一次只在 1 个片段上处理收到的消息
- python - 如何总结完整的预测评级数组和实际已知评级之间的差异(python)
- flutter - Streambuilder没有在颤动的对话框内被调用