想请教大家中文 URL 的编码问题

2021-02-04 22:28:03 +08:00
 magic961102

如题,短链接项目,传入的可能为中文,redirect 后中文变'?',URLEncoder.encode 不能对整个链接编码,不然会出现“过度编码”的问题,有什么好的解决方案吗?

2330 次点击
所在节点    Java
10 条回复
magic961102
2021-02-04 22:54:00 +08:00
手动置顶
JinTianYi456
2021-02-04 22:58:36 +08:00
是不是这个? /t/737430
magic961102
2021-02-04 23:03:39 +08:00
@JinTianYi456 但是这个没有解决问题
magic961102
2021-02-04 23:42:27 +08:00
或者有没有第三方的包能实现
luozic
2021-02-05 00:13:45 +08:00
写一个去除部分符号的编码方式。
chendy
2021-02-05 00:18:09 +08:00
SpringWeb 的 UriComponenetBuilder,不知道能不能满足需求:

public static void main(String[] args) throws Exception {
String urlStr = "http://test.com?q=真不戳";
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(urlStr);
String uriString = builder.toUriString();
System.out.println(uriString);
String decodeUriString = URLDecoder.decode(uriString, StandardCharsets.UTF_8.name());
System.out.println(decodeUriString);
}
yksoft1test
2021-02-05 08:21:38 +08:00
把域名和路径分开编码,域名用 punycode,路径先 UTF8 化再 URLEncode 。
magic961102
2021-02-05 09:01:54 +08:00
@yksoft1test 分开比较麻烦,长链接传进来最好能完整处理
magic961102
2021-02-05 09:02:02 +08:00
@chendy 我一会试试看
magic961102
2021-02-05 09:02:37 +08:00
@luozic 看来自己写是最灵活的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/751392

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX