URLEncoder-用于空白而不是%20或+的字符集

时间:2019-05-10 10:25:56

标签: java email url encoding

我正在尝试通过Java应用程序打开新电子邮件:

        String str=String.valueOf(email);
        String body="This is body";
        String subject="Hello worlds";
        String newStr="mailto:"+str.trim()+"?subject="+URLEncoder.encode(subject,"UTF-8")+"&body="+URLEncoder.encode(body, "UTF-8")+"";
        Desktop.getDesktop().mail(new URI(newStr));

这是我的URLEncoding。由于无法对URL的主体或主题字符串进行编码,因此我在这里的输出是“ +”而不是空格。我知道这很正常。我在想是否可以正常显示邮件中的主题和身体?我尝试使用.replace(“ +”,“”),但由于显示错误,因此无法正常工作。现在就是这样:

enter image description here

我认为可能会有不同的字符集,但我不确定。

1 个答案:

答案 0 :(得分:0)

URLEncoder就是这样工作的。

一种可能的方法是在URLEncoder.enocde(...)之后用+替换所有%20 或者,您可以依靠URI构造函数来正确编码参数:

String scheme = "mailto";
        String recipient = "recipient@snakeoil.com";
        String subject = "The Meaning of Life";
        String content = "..., the universe and all the rest is 42.\n Rly? Just kidding. Special characters: äöü";
        String path = "";
        String query = "subject=" + subject + "&body=" + content;
        Desktop.getDesktop().mail(new URI(scheme, recipient, path, query, null));

两个解决方案都存在以下问题: 在第一种方法中,您可能会替换实际的+符号,而在第二种方法中,您会遇到&字符的问题。