我正在尝试从我的 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("+","") 但它不起作用,因为它给出了错误。现在就是这样:
我认为可能有不同的字符集,但我不确定。
最佳答案
这就是 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));
两种解决方案都有问题:
在第一种方法中,您可能会替换实际的 +
符号,而使用第二种方法时,您可能会遇到 &
字符的问题。
关于java - URLEncoder - 用于空白空间而不是 %20 或 + 的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56075679/