1

当我向包含 @ char 的 kannel 发送消息时遇到问题。例如,我发送了“@Test”,但手机收到了“i Test”之类的信息。

这是 kannel 错误吗?如果是这样,有人有补丁吗?

4

1 回答 1

9

@ 符号的问题在 SMS 中非常流行,因为 GSM 中的这个字符有 0x00 代码,而不是 ASCII 或 UTF-8 中的 0x40。

要正确处理此字符和其他一些字符,建议在通过 Kannel 发送消息时提及以下参数:

  • 编码- 0(默认 GSM)或 2(如果您发送 Unicode 字符)
  • charset - 您发送到 Kannel 的字符串字符集

这种情况下,Kannel 将自己转换字符(如果使用 libiconv 构建)。

例子:

http://127.0.0.1:13013/cgi-bin/sendsms?...&coding=0&charset=utf-8&text=test+@+sign

如果您通过 SMPP 连接到 SMSC,可能会出现另一个问题。一些平台可能使用不同于标准的字符集。例如,它可能是 ASCII。

要解决此问题,您可以对配置文件的正确group = smsc部分使用alt-charset参数:

group = smsc
smsc = smpp
...
alt-charset = "ASCII"

要对此进行调试,我建议为 SMSC 连接log-level = 0添加日志记录,并检查协议转储以查看从 Kannel 发送到 SMSC 的确切内容。通常,@ 符号应该是 0x00 字符。

于 2011-12-30T15:34:30.570 回答