如何解决使用带有有效字符集的 Java 编码 URL 中的查询参数
我试图了解编码和解码文本时可用的不同字符集的区别和重要性。
我有一个场景,我想在其中调用 RestAPI。 RestAPI 有一个基本 URL,例如:https://myrestapiurl.com
。现在要执行 GET
请求,URL 是通过附加我想要获取的实体的 id
形成的,例如:https://myrestapiurl.com('id')
id
:它对有效字符没有限制!
我遇到了一个id:باقی ریسورس
,所以在调用RestAPI之前,我需要对它进行编码。使用 Java 的 URLEncoder,我尝试了以下操作:
String s ="باقی ریسورس";
String encodedID = URLEncoder.encode(s,StandardCharsets.UTF_8.name() )
使用编码 ID,我尝试使用 PostMan
发出请求。当我使用不同的字符集时,请求失败并显示 404 or 400
。只有当我使用 ISO_8859_1
进行如下编码时它才会成功:
String encodedID = URLEncoder.encode(s,StandardCharsets.ISO_8859_1.name());
String URL = "https://myrestapiurl.com('" + encodedID + "')";
这很好用,通过代码和 PostMan。我的问题是:
如何在编码前决定使用哪个字符集? Or should I have fallbacks
?也就是说,如果它因 UTF_8 then try with UTF_16
等而失败...但这非常低效。如果实体实际上不存在,那么这些尝试将是开销
此外,当我访问 https://www.w3schools.com/tags/ref_urlencode.ASP 并输入要编码的文本时,它提供了带有 ISO_8859_1
的有效编码字符串,它是如何做到的?
如何在不使用任何其他额外库(例如 apache
)的情况下在 Java 中完成此操作?我们没有选择添加额外的依赖项!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。