首页 > 解决方案 > 在我的 C# 应用程序中:如何使用 AT 命令重建从 GSM 调制解调器获取的文本消息,以显示表情符号/表情符号以及单词?

问题描述

如果收到的消息只包含单词,则没有问题。但是当消息中包含表情符号和文字时,消息就无法被理解。我认为它是某种形式的另一种格式。

例如,如果来自发件人的消息是“你好”和一个笑脸,它会在我的 C# 应用程序中显示为“00480065006C006C006F0020D83DDE00”。

我在文本模式下阅读消息,即“AT+CMGF=1”。我觉得解决的办法是用“AT+CMGF=0”(非文本模式)读取msgs来覆盖所有类型的消息,并应用一个算法来解码。这是这样做的方法吗?

我遇到的大多数关于表情的帖子都提供了关于发送表情的解决方案。我似乎无法找到接收的解决方案。

标签: c#gsmmodem

解决方案


从文本来看,它似乎是 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 

推荐阅读