我正在编写一个 C 应用程序,它通过串行端口与 SIEMENS TC65 GSM 调制解调器进行通信。我能够正确发送 SMS 消息,但现在我想发送一些超出默认 GSM 03.38 字符集的字符。
请参阅:http://www.csoft.co.uk/sms/character_sets/gsm.htm
例如,如果我尝试发送字符 [
,此页面告诉我必须使用 ESC
字符后跟 <
.问题是调制解调器正在解释 ESC
字符并中止消息的发送,它不会读取完整的消息内容。
谁能帮我发送这些位于“扩展”GSM 03.38 字符集中的字符?
问候
最佳答案
您的链接表中有一些不正确的字符。我建议从 3GPP 下载原始规范 here适用于 GSM 和最新的 UICC here . UICC 规范中包含了欧元符号。
要访问Extension表,需要添加转义控制0x1B
如下:
^ : 0x1B 0x14
{ : 0x1B 0x28
} : 0x1B 0x29
\ : 0x1B 0x2F
[ : 0x1B 0x3C
~ : 0x1B 0x3D
] : 0x1B 0x3E
| : 0x1B 0x40
€ : 0x1B 0x65
page break : 0x1B 0x0A
使用示例:
// [Hello]
byte[] text = new byte[] {0x1B, 0x3C, 'H', 'e', 'l', 'l', 'o', 0x1B, 0x3E};
注意事项:
- 0-9、A-Z、a-z、空格(一些其他字符)的 ASCII 码与 GSM 默认字母表类似。其余请看表
- 如果手机/手机不支持扩展表字符,则按默认表字符显示(例如,欧元将显示为小'e')
- 如果您使用阿拉伯语或中文,则不能使用 GSM 默认字母表及其扩展表。相反,使用 Unicode 字符集 2 (UCS-2)
关于c - 使用 ESC 字符访问 GSM 03.38 扩展字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109542/