【发布时间】:2019-11-20 16:36:22
【问题描述】:
我想使用 AT 命令从我的 GSM 调制解调器发送包含表情符号的短信。
但是,无论我尝试哪种编码,它都无法正常工作(Encoding.BigEndianUnicode、Encoding.Unicode 或 Default)使 SMS 无法读取。
我的代码看起来有点像这样:
// [..]
// send message with UCS2
command = "AT+CSCS=\"UCS2\"" + char.ConvertFromUtf32(13);
send(command);
// [..]
// convert my message (string from a WPF TextBox) to a unicode hex-string
byte[] ba = Encoding.BigEndianUnicode.GetBytes(message);
var hexString = BitConverter.ToString(ba);
hexString = hexString.Replace("-", "");
// send the converted string
command = hexString + char.ConvertFromUtf32(26);
send(command);
// [..]
短信成功到达目的地,但短信只是一些不可读的东西。
这甚至可能吗?我的 GSM 调制解调器也支持“HEX”作为编码。
更新: 如果我替换这一行,它有点工作:
command = hexString + char.ConvertFromUtf32(26);
有了这个:
command = "80 " + hexString + char.ConvertFromUtf32(26);
但是我在消息的开头收到了这个㣩字母......
【问题讨论】:
-
UCS-2 无法对基本平面之外的字符进行编码,例如表情符号。请编辑您的问题以演示/验证将
"\N{NAUSEATED FACE}"(U+1F922) 编码为 UTF-16BE 会导致八位字节 0xd8 0x3e 0xdd 0x22 并且没有字节顺序标记。
标签: c# unicode encoding at-command