我几周前在users@kannel.org上提出了一个我已经宣布解决的问题,关于在短信中发送特殊字符(用户摘要,第74卷,第14期主题HTTP编码); < / p>
我在向短信发送特殊字符符号时遇到了麻烦,并通过在处理发送短信的perl脚本中实现charset = utf-8和coding = 2来解决这个问题。
.......
use CGI::Enurl;
use Unicode::Lite;
........
($msgType =~ /(?:web)|(?:err)|(?:text)/i) ? '&text=' . enurl($text).'&coding=2'.'&charset=utf-8'
........
但是现在我意识到这导致我开始接收半信息,其中大部分被截断在第90个字符之后,或者一个响应是444个字符,它们在105个字符后被截断。
如何确保通过这些特殊字符发送,同时不影响我的处理?
其他信息:
这是处理各种消息类型(错误,文本,徽标,音调等)的代码段。我评论了这个变化。'&amp; coding = 2'。'&amp; charset = utf-8'允许我继续接收完整的消息。现在只有不起作用的是特殊符号。处理这些文本响应的行是第一行。
$URL .= (
($msgType =~ /(?:web)|(?:err)|(?:text)/i) ? '&text=' . enurl($text)#.'&coding=2'.'&charset=utf-8'
: ($msgType =~ /(?:logo)/i) ? '&udh=%06%05%04%15%82%00%00&text=' . $code . delimit_bytes($text)
: ($msgType =~ /^(?:tone)$/i)
? '&udh=' . delimit_bytes('0B0504158115810003660101') . '&text=' . delimit_bytes($text)
: ($msgType =~ /^(?:etone)$/i) ? '&udh=' . delimit_bytes($text) . '&text=+'
: ($msgType =~ /(?:unicode)/i) ? '&text=' . enurl(convert('latin1', 'unicode', $text)) . '&coding=3'
: ""
)