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

标签 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

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

最佳答案

这就是 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/

相关文章:

java - 有没有办法在不使用第三方库的情况下创建 tar 文件?

java - JScrollPane 使用方向键滚动

java - 是否有保证在自定义 SOAP 处理程序中获取操作名称的方法?

java - 获取 'seen' 标志似乎不起作用

url - 友好的网址方案?

swift 3 : Fast file path separation

java - 三个按钮 OnClickListener Android 应用程序

android - 三星galaxy手机邮箱样式查询

html - Gmail 标记为带有 h​​tml 和 anchor 链接的垃圾邮件

url - Golang 中 url.openStream() 的等效函数