我正在尝试通过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(“ +”,“”),但由于显示错误,因此无法正常工作。现在就是这样:
我认为可能会有不同的字符集,但我不确定。
答案 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));
两个解决方案都存在以下问题:
在第一种方法中,您可能会替换实际的+
符号,而在第二种方法中,您会遇到&
字符的问题。