在kannel发送阿拉伯语短信

我试图从kannel发送阿拉伯语短信(或法语短信),并且在对bearebox,smsbox和之间发送的值进行一些分析之后,它没有完全得到客户端(对于阿拉伯语单词而言是somtimes ??????) smsc我发现编码错误发生在我的熊盒和smsbox之间。

我在发送短信的http请求中使用了charset=utf-8&coding=2但是出现了同样的问题

有没有人知道什么是问题或更好的解决方案?

这是我用来发送短信的代码

 StringBuffer param = new StringBuffer() param.append("http://localhost:1025/cgi-bin/sendsms?") param.append(URLEncoder.encode("username","UTF-8")).append("=").append(URLEncoder.encode("xxx","UTF-8")) param.append("&").append(URLEncoder.encode("password","UTF-8")).append("=").append(URLEncoder.encode("xxxx","UTF-8")) param.append("&").append(URLEncoder.encode("to","UTF-8")).append("=").append(URLEncoder.encode(numTel,"UTF-8")); param.append("&").append(URLEncoder.encode("charset","UTF-8")).append("=").append(URLEncoder.encode("utf-8","UTF-8")) param.append("&").append(URLEncoder.encode("coding","UTF-8")).append("=").append(URLEncoder.encode("2","UTF-8")) param.append("&").append(URLEncoder.encode("text","UTF-8")).append("=").append(URLEncoder.encode(text,"UTF-8")) param.append("&").append(URLEncoder.encode("priority","UTF-8")).append("=").append(URLEncoder.encode(""+priority,"UTF-8")) param.append("&").append(URLEncoder.encode("dlr-mask","UTF-8")).append("=").append(URLEncoder.encode("31","UTF-8")) param.append("&").append(URLEncoder.encode("dlr-url","UTF-8")).append("=").append(URLEncoder.encode(urlString,"UTF-8")) try{ URL url = new URL(param.toString()) System.out.println("INFO : Opening connection ") HttpURLConnection urlconnection = (HttpURLConnection) url.openConnection() System.out.println("INFO : Connection openned") BufferedReader input = new BufferedReader( new InputStreamReader(urlconnection.getInputStream())) String inputLine while ((inputLine = input.readLine()) != null) aResult.append(inputLine) input.close() }catch(Exception e){ e.printStackTrace() return false } System.out.println("response : "+aResult.toString()) System.out.println("INFO : all sent disconnect.") ' 

谢谢

我已经能够使用此http请求示例发送阿拉伯语/法语短信:

 StringBuffer param = new StringBuffer() param.append("http://localhost:1025/cgi-bin/sendsms?") param.append(URLEncoder.encode("username","UTF-8")).append("=").append(URLEncoder.encode("xxx","UTF-8")) param.append("&").append(URLEncoder.encode("password","UTF-8")).append("=").append(URLEncoder.encode("xxxx","UTF-8")) param.append("&").append(URLEncoder.encode("to","UTF-8")).append("=").append(URLEncoder.encode(numTel,"UTF-8")); param.append("&").append(URLEncoder.encode("coding","UTF-8")).append("=").append(URLEncoder.encode("2","UTF-8")) param.append("&").append(URLEncoder.encode("text","UTF-8")).append("=").append(URLEncoder.encode(text,"UTF-8")) param.append("&").append(URLEncoder.encode("priority","UTF-8")).append("=").append(URLEncoder.encode(""+priority,"UTF-8")) param.append("&").append(URLEncoder.encode("dlr-mask","UTF-8")).append("=").append(URLEncoder.encode("31","UTF-8")) param.append("&").append(URLEncoder.encode("dlr-url","UTF-8")).append("=").append(URLEncoder.encode(urlString,"UTF-8")) try{ URL url = new URL(param.toString()) System.out.println("INFO : Opening connection ") HttpURLConnection urlconnection = (HttpURLConnection) url.openConnection() System.out.println("INFO : Connection openned") BufferedReader input = new BufferedReader( new InputStreamReader(urlconnection.getInputStream())) String inputLine while ((inputLine = input.readLine()) != null) aResult.append(inputLine) input.close() }catch(Exception e){ e.printStackTrace() return false } System.out.println("response : "+aResult.toString()) System.out.println("INFO : all sent disconnect.") 

我不在我的请求中发送“charset”参数我只发送编码参数

我做了一些研究,我相信如果你指定coding=2 Kannel期望邮件正文编码为UTF-16,至少如果我正确理解了这个讨论 。
你也应该看看这个文件 。

您所要做的就是以下(kannel版本1.5):1-在您的kannel配置中的smsc组下添加alt-charset =“UTF-8”2-发送短信مرحبا时,您必须键入以下类型你的sentms命令:text =مرحبا&charset = UTF-8&coding = 1

使用mysql命令检查数据库,因为像webmin这样的数据库管理工具可能无法识别阿拉伯字母