通过Java Web服务发送阿拉伯语文本

时间:2012-02-12 13:25:31

标签: java character-encoding sms arabic

当我通过JAVA Webservice发送阿拉伯语文本时,我的手机上会收到特殊字符(?????)。以下是我实施的方式。

  1. Webservice客户端和测试程序在我的Windows PC上,我从Eclipse运行,其字符集是ISO-8859-1。
  2. 在我的测试程序中,我正在编码(使用URLEncoder)阿拉伯字符串到ISO-8859-6。
  3. Web服务主机安装在Linux服务器上。这里我将编码的字符串转换为字节。然后我通过TCP IP将此请求转发到java服务。该服务负责发送短信。
  4. 在这个Java服务中,我使用与上面相同的加密解码并发布到SMS提供程序。
  5. 实施

    /**
     * Arabic Implementation is as below
     **/
    String message= arabictext;
    message=URLEncoder.encode(message,"ISO-8859-6");
    sendMessage(message,uername,password); ///webservice call
    

    Web服务主机编码:

    sendMessage(p_message,username,password){
        byte[] request = message.getbytes();//tried by passing character set
        Tcserver.post(request);//posting the request to java client
    }
    

    注意:Webservice Host和Java客户端都托管在同一台物理服务器上。

    Java客户端:

    sendSMS(p_message){
        message =URLDecoder.decode(p_message,"ISO-8859-6");//send message to mobile provider.
        sendmessagetoProvider(message);
    }
    

    当我在PC上运行TCPViewer时,我看到了特殊字符。知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

我认为问题出现在sendmessagetoProvider以及URLEncoderURLDecoder的使用范围内。

当您发送消息时,您可能需要对其进行编码。您正在客户端呼叫decode。 BTW恕我直言,这就是你收到“特殊字符”的原因。

因此,首先来看看您的API规范。方法sendmessagetoProvider期待什么?可能您不必将字符串编码为URL?可能它只支持Unicode,或者你在调用客户端时必须提供编码?然后相应地修改代码。

祝你好运。