在我的 C# 应用程序中:如何使用 AT 命令重建从 GSM 调制解调器获取的文本消息,以显示 emoticons/emojis 以及文字?
In my C# application: How do I reconstruct a text message taken from a GSM Modem using AT commands, to show emoticons/emojis as well as words?
如果收到的消息只有文字,没有问题。但是当消息中包含表情符号和文字时,消息就无法被理解。我认为它是另一种格式。
例如,如果来自发件人的消息是“你好”和一个笑脸,它在我的 C# 应用程序中将显示为“00480065006C006C006F0020D83DDE00”。
我以文本模式阅读消息,即“AT+CMGF=1”。我觉得解决方案是用“AT+CMGF=0”(非文本模式)读取消息以涵盖所有类型的消息,并应用算法进行解码。是这样吗?
我遇到的大多数关于表情符号的帖子都给出了关于发送表情符号的解决方案。我似乎找不到接收解决方案。
从文字来看好像是Big Endian Unicode:
//
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
如果收到的消息只有文字,没有问题。但是当消息中包含表情符号和文字时,消息就无法被理解。我认为它是另一种格式。
例如,如果来自发件人的消息是“你好”和一个笑脸,它在我的 C# 应用程序中将显示为“00480065006C006C006F0020D83DDE00”。
我以文本模式阅读消息,即“AT+CMGF=1”。我觉得解决方案是用“AT+CMGF=0”(非文本模式)读取消息以涵盖所有类型的消息,并应用算法进行解码。是这样吗?
我遇到的大多数关于表情符号的帖子都给出了关于发送表情符号的解决方案。我似乎找不到接收解决方案。
从文字来看好像是Big Endian Unicode:
//
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