Java 将html格式的字符串转换为mailto链接

Java 将html格式的字符串转换为mailto链接,java,html,encoding,mailto,Java,Html,Encoding,Mailto,在JavaWebApp中,我需要一个自动转换器来转换字符串以用于mailto链接 举例来说,我有这个字符串“S&D”将在html中正确显示为“S&D”。但是现在我需要在我的网页上有一个mailto链接 <a href="mailto:?subject=my%20subject&body=S&amp;D">share</a> 它的字符“&”错误,因此我需要将“&”转换为“%26” 有图书馆可以这样做吗 我尝试了java.net.URLEncoder,但

在JavaWebApp中,我需要一个自动转换器来转换字符串以用于mailto链接

举例来说,我有这个字符串“S&D”将在html中正确显示为“S&D”。但是现在我需要在我的网页上有一个mailto链接

<a href="mailto:?subject=my%20subject&body=S&amp;D">share</a>

它的字符“&”错误,因此我需要将“&”转换为“%26”

有图书馆可以这样做吗

我尝试了java.net.URLEncoder,但她只更改了“&”而不是“&”,并将空格“”替换为加“+” 我尝试了java.net.URI,但她没有为角色“&”做任何事情

引用(谢谢):

在生成“mailto”URI时,所有空格都应编码为 %20和“+”字符可编码为%2B。请注意“+” 字符经常作为电子邮件地址的一部分用于 指示子地址,例如在

更新代码:

String subject = URLEncoder.encode("my subject", "utf-8").replace("+", "%20");
String body = URLEncoder.encode("S&D", "utf-8").replace("+", "%20");
// Email addresses may contain + chars
String email = "test@example.com".replace("+", "%2B");
String link = String.format("mailto:%s?subject=%s&body=%s", email, subject, body);
System.out.println(StringEscapeUtils.escapeHtml(link));
输出:

mailto:test@example.com?subject=my%20subject&amp;body=S%26D
可在如下链接中使用:

<a href="mailto:test@example.com?subject=my%20subject&amp;body=S%26D">mail me</a>


from.

这将转义HTML特殊字符,但不会对mailto“请求字符串”中的每个参数进行编码。每个参数都应该首先进行编码,然后整个URL应该是HTML转义的。问题是URLEncoder使用+表示空格,而这不适用于mailto链接(确切地说,+在邮件的主题中)。但参数必须以某种方式编码,至少对于多行体是这样。请参阅URLEncoder.encode(“S&D”、“UTF-8”)可以工作是的,但URLEncoder.encode(“S&D”、“UTF-8”)不能工作!我检索html字符,需要转换为mailtolink。源页面中的链接是S%26amp%3BD,邮件客户端软件中的结果是S&;D对于我来说,
S&D
正确编码为
S%26D
。我在回答中添加了输出和用法。