java - URLEncoder - 用于空白空间而不是 %20 或 + 的字符集
问题描述
我正在尝试从我的 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 的工作方式。
一种可能的方法是将 all 替换+
为%20
after URLEncoder.enocde(...) 或者您可以依靠 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));
两种解决方案都有问题:在第一种方法中,您可能会替换实际+
标志,而第二种方法中,您将遇到&
字符问题。
推荐阅读
- php - 防止默认不工作 Jscript if(confirm){}else{prevent default}
- sql - SQL如何加入和总结
- javascript - 多维数组过滤javascript
- html - 与 target="_blank" 和 rel="noopener noreferrer" 的链接仍然容易受到攻击?
- c - 如何以及在何处声明互斥锁
- c#-4.0 - 来自 Button 事件的 C# 线程访问
- mysql - 用于许多连接表记录的 Mysql Logic
- python - 水平滚动 QTextEdit 到特定的列号
- java - 将 URL 变量传递给安全弹簧表单
- docker - 我可以在 Docker 构建期间将 MVC 3 安装到 Windows 容器中吗?