AT命令中的丹麦字母

问题描述

我正在尝试让我的 SMS 网关使用 AT 命令发送 SMS。我正在通过 SSH 连接我的命令提示符。我是初学者,所以请耐心等待。 以下几行工作:

DEV=/dev/ttyACM1
DESTNUM="PHONENUMER"
SMS="Test SMS from ø"
echo -e "ATZ\r" >$DEV
echo -e "AT+CMGF=1\r" >$DEV
echo -e "AT+CMGS=\"$DESTNUM\"\r" >$DEV
echo -e "$SMS\x1A" >$DEV

所以上面的短信发送正确,但它不包括dansih字母“ø”。通常这包含在 UTF-8 中。

如何让我的代码与丹麦字符一起工作?有什么想法吗?

解决方法

默认情况下,短消息使用 GSM aplhabet (03.38) 发送,由 3GPP TS 23.038 定义。可以通过发出 AT+CSMP 命令来更改此设置(设置文本模式参数 - 我不会在本答案中深入研究它)。

更具体地说,使用了 7-bits aplhabet,以便设备可以在 7 个字节(8x7=56)中编码 8 个字符,从而节省了“宝贵的空间”以发送更多信息。

这个字母表是从 7 位 ASCII 的巧妙派生而来。 ASCII 中用于“无用”字符(尤其是控制字符)的一组代码被用来从字母表中添加特定字符,例如丹麦语:

丹麦字符 GSM 03.38 代码
Ø \x0B
ø \x0C
Å \x0D
å \x0F
Æ \x1C
æ \x1D

因此,您只需编写一个特殊的例程,将特定的丹麦字符转换为相应的转义码。