【问题标题】:SMPP-GSM data encodingSMPP-GSM数据编码
【发布时间】:2012-12-02 12:29:38
【问题描述】:
假设我们有一个 ESME 与 SMSC 通信并且 SMSC 与
一个移动台。如果短信中包含需要
转义然后将使用 ESC (0x1B) 符号。但是,我认为 ESC
是 GSM 字母表中的控制字符,因此 Latin-1 将用于编码。
(根据 SMPP v3.4 规范第 8 页)。
进一步假设可用
从 SMSC 到移动台的编码是 GSM 默认字母表。这有没有可能
解释 ESME 以 Latin-1 编码的转义字符 (ESC) ?
简而言之,在转义 GSM ESME 中的短信字符时,是否会出现任何可能被 SMSC 或移动台误解的奇怪字符?
【问题讨论】:
标签:
mobile
encoding
gsm
smpp
【解决方案1】:
您需要使用的编码很大程度上取决于使用的 data_coding 值。假设您使用 data_coding=0 表示“默认字母”,那么仍然取决于 SMSC 的“默认字母”是哪个。
例如,有些 SMSC 将 Latin1 作为字符集运行,但是不属于 GSM 默认字母表的字符需要转义。
首先,您需要确定 SMSC 的默认字符集(更好的 SMPP 组件)。 0x1b 序列基本上和Latin1 没有任何关系。如果您的 SMSC 正在运行 GSM,并且您想发送一个 € 符号,您可以在 submit_sm 操作的 short_message 字段中发送 0x1b0x65 作为字节序列。
最后,如果您的 SMSC 使用的是 GSM 而 ESME 使用的是 Latin1,那么可能会出现奇怪的字符,因为 GSM 有例如不属于 Latin1 的希腊字符。