sms - AT 命令中的丹麦字母
问题描述
我正在尝试让我的 SMS 网关使用 AT 命令发送 SMS。我正在通过 SSH ia 命令提示符进行连接。我是这方面的初学者,所以请多多包涵。以下几行有效:
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 中。
如何让我的代码与丹麦字符一起使用?有任何想法吗?
解决方案
默认情况下,使用由3GPP TS 23.038定义的GSM aplhabet (03.38)发送短消息。可以通过发出命令来更改此设置(设置文本模式参数 - 我不会在此答案中深入研究它)。AT+CSMP
更具体地说,使用7 位 aplhabet,以便设备可以将 8 个字符编码为 7 个字节(8x7=56),节省“宝贵空间”以发送更多信息。
这个字母表是 7 位 ASCII 的巧妙派生。ASCII 中用于“无用”字符(尤其是控制字符)的一组代码用于添加字母表中的特定字符,例如丹麦语:
丹麦语字符 | GSM 03.38 代码 |
---|---|
Ø | \x0B |
Ø | \x0C |
一个 | \x0D |
一个 | \x0F |
Æ | \x1C |
Ë | \x1D |
因此,您只需编写一个特殊的例程,将特定的丹麦语字符转换为相应的转义码。
推荐阅读
- javascript - 在 react Native 中使用外部 API 呈现 Flatlist 的正确方法
- python - 熊猫在列表中正确的值
- java - 为 netbeans 8.2 运行 SQL 时出现词法错误
- regex - 通过在现有列上执行正则表达式来创建新列
- python - 如何将可变长度参数传递给另一个函数的参数?
- ada - Ada 202x 提案@限制理由?
- python - Python:无法在excel中格式化输出数据透视表的行
- java - Spring MVC - 尽管用户名和密码正确,但仍将我重定向到我的登录失败映射
- php - 由于连字符,pq_query 语法错误。我怎么写这个?
- sparql - 在参与者的 wikidata 查询中应用 group_concat