java grails character-encoding sms kannel

java - Envío de SMS en árabe en kannel



grails character-encoding (3)

Estoy tratando de enviar sms arábigos (o sms en francés) desde el kannel y el cliente no termina perfectamente (a veces ?????? en palabras árabes), después de hacer algunos análisis sobre los valores enviados entre el bearebox, smsbox y smsc descubrí que el error en la codificación ocurre entre my bearbox y smsbox.

He utilizado charset=utf-8&coding=2 en mi solicitud http para enviar sms, pero ocurre el mismo problema

¿Alguien tiene alguna idea sobre cuál es el problema o mejor una solución?

aquí está el código que uso para enviar sms

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

Gracias


He podido enviar SMS en árabe / francés con este ejemplo de solicitud 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.")

No envío el parámetro "charset" en mi solicitud. Solo envío el parámetro de codificación.


Investigué un poco, y creo que si especifica coding=2 Kannel espera que el cuerpo del mensaje se codifique como UTF-16, al menos si entendí correctamente esta discusión .
También deberías echarle un vistazo a este documento .


Todo lo que tiene que hacer es lo siguiente (versión de kannel 1.5): 1- Agregar alt-charset = "UTF-8" en el grupo smsc en la configuración de su kannel 2- al enviar el sms مرحبا, por ejemplo, debe escribir mecanografiar lo siguiente en su comando de sendsms: text = مرحبا & charset = UTF-8 & coding = 1

Compruebe su base de datos utilizando el comando mysql porque las herramientas de administración de bases de datos como webmin pueden no reconocer las letras árabes