将@ char发送给kannel的错误

var*_*sha 1 kannel

当我向包含@ char的kannel发送消息时,我遇到了问题.例如,我发送了"@ Test",但是手机收到了类似"i Test"的内容.

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

小智 9

@符号的问题在SMS中非常流行,因为GSM中的这个字符在ASCII或UTF-8中有0x00代码而不是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
Run Code Online (Sandbox Code Playgroud)

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

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

group = smsc
smsc = smpp
...
alt-charset = "ASCII"
Run Code Online (Sandbox Code Playgroud)

为了调试这个,我建议为SMSC连接log-level = 0添加日志记录并检查协议转储,以查看从Kannel到SMSC的确切发送内容.通常@符号应为0x00字符.