在Java中的URL中插入unicode字符

在Java中的URL中插入unicode字符,java,unicode,utf-8,desktop-application,Java,Unicode,Utf 8,Desktop Application,我想从基于Java的桌面软件发送印地语短信。下面是从JTextArea获取消息并将消息附加到URL中的代码。有了这段代码,我可以从Macbook发送印地语短信,但在Windows中不起作用。从windows发送短信时,字符替换为 下面是从JTextArea获取消息的代码 byte[] utf8Bytes; utf8Bytes = hindiSMS.getText().getBytes(StandardCharsets.UTF_8); String hindiMessage = new Strin

我想从基于Java的桌面软件发送印地语短信。下面是从JTextArea获取消息并将消息附加到URL中的代码。有了这段代码,我可以从Macbook发送印地语短信,但在Windows中不起作用。从windows发送短信时,字符替换为

下面是从JTextArea获取消息的代码

byte[] utf8Bytes;
utf8Bytes = hindiSMS.getText().getBytes(StandardCharsets.UTF_8);
String hindiMessage = new String(utf8Bytes,StandardCharsets.UTF_8);
hindiMessage.replace(" ", "+");
Util.sendSMS(hindiMessage, hindiMobileNos);
下面是发送短信的代码

    String url="http://sms.sendonlinesms.com/sendsmsv2.asp?user=****&password=*******&sender=*****&text="+message+"&PhoneNumber="+mobilenos+"&unicode=1";       

    URLEncoder.encode(url,"UTF8");

    URL myURL=new URL(url);

    URLConnection yc = myURL.openConnection();
更新:我也尝试了以下代码

 URI uri=null;
    try {
        uri = new URI(
                "http", 
                "sms.sendonlinesms.com", 
                "/sendsmsv2.asp",
                "user=****&password=******&sender=70025&text="+message+"&PhoneNumber="+mobilenos+"&unicode=1",null);


    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    URL myURL=uri.toURL();


    URLConnection yc = myURL.openConnection();
但这没什么区别。在Mac电脑上工作正常,但在Windows上不工作。
使用mac上的应用程序,我可以用印地语发送短信,但使用windows上的应用程序,印地语字符被替换为“?”

可能与上述代码在mac上工作而在windows上不工作的原因有任何重复。请描述一下它是如何工作的?你用的是哪种答案?在你的帖子中用答案的链接编辑它,以便人们知道你尝试了什么以及Mac和Windows上的JRE版本?当我从Mac上运行的应用程序发送印地语短信时,短信会正确地以印地语发送。但当我从运行在windows上的应用程序发送时,所有字符都被替换为“?”,我正在用从您提供的链接尝试的代码更新问题。两者都在相同的Java版本上。版本7更新60是否使用uri.toASCIIString;?在代码中看不到这一点。