Java: 带有主题和多行纯文本正文的mailto链接编码

4

我已经进行了大量的谷歌搜索,但是没有找到解决我的问题的方法。我需要在Java中对mailto:链接中的主题和正文进行UTF-8编码。

正文由纯文本组成

是否有任何一种方法可以对以下内容进行编码:

  • 整个字符串采用 UTF-8 编码,例如 Ä 编码为%C3%84S
  • 空格转换为%20而不是 +
  • \r\n 转换为%0D%0A
  • / 转换为 %2f

感谢您的帮助!

1个回答

3
你需要使用URLEncode.encode(String s, String enc)方法。第二个参数应该是字符串UTF-8
它会将空格编码为+而不是%20,这在查询参数中是有效的;你可以特殊处理并将所有前者替换为后者。例如:
import java.net.URLEncoder;
import java.util.regex.Pattern;

public class Foobar {
  private static Pattern space = Pattern.compile("\\+");
  public static void main(String[] args) throws Exception {
    String first = URLEncoder.encode("Ä+ \r\n/", "UTF-8");
    String second = space.matcher(first).replaceAll("%20");
    System.out.println(second);
  }
}

这将输出:
%C3%84%2B%20%0D%0A%2F

1
谢谢,但我已经尝试过了,它无法正确编码 \r\n - Ernst
1
换行符和回车符对我来说工作得很好。通过使用正则表达式更新了特殊情况,将空格使用 %20 代替。 - wmorrell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接