Вопрос по java – Отправка арабских смс в канале

3

Я пытаюсь отправить арабские смс (или французские смс) из kannel, и это не дает клиенту идеальный конец (иногда для арабских слов), Проведя некоторый анализ значений, передаваемых между bearebox, smsbox и smsc, я обнаружил, что ошибка в кодировке происходит между моим bearbox и smsbox.

я использовалcharset=utf-8&coding=2 на мой http запрос на отправку смс но такая же проблема возникает

Кто-нибудь имеет представление о том, в чем проблема или лучшее решение?

вот код, который я использую для отправки смс

<code>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.")
'
</code>

Спасибо

Если вы печатаете param.toString (), вы видите ожидаемый арабский текст? Carlo
Нет, текст зашифрован за исключением английских слов. Означает ли это что-то не так с моим http-запросом? потому что, когда я смотрю в консоли smsbox, я вижу ожидаемый текст, но когда я захожу в консоль bearbox, это портит Saad Touhbi
Как вы делаете HTTP-запрос? Carlo
проверьте пост, я добавил код Saad Touhbi
Хорошо, возьми закодированный текст и попробуйhere, Вы видите ожидаемый текст? Carlo

Ваш Ответ

3   ответа
0

coding=2 Каннель ожидает тело сообщения, закодированное как UTF-16, по крайней мере, если я правильно понялэто обсуждение.
Также вы должны взглянуть на этодокумент.

Error: User Rate Limit Exceeded Saad Touhbi
0

1- Добавить alt-charset = "UTF-8" в группе smsc в вашей конфигурации kannel 2 - при отправке смс & # x645; & # x631; & # x62D; & # x628; & # x627; например, вам нужно набрать в вашей команде sendms следующее: text = & # x645; & # x631; & # x62D; & # x628; & # x627; & charset = UTF-8 & amp; coding = 1

Проверьте вашу базу данных с помощью команды mysql, потому что инструменты управления базами данных, такие как webmin, могут не распознавать арабские буквы

4

са 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.")

я не отправляю "кодировку" параметр в моем запросе я отправляю только параметр кодирования

Похожие вопросы