如题,短链接项目,传入的可能为中文,redirect 后中文变'?',URLEncoder.encode 不能对整个链接编码,不然会出现“过度编码”的问题,有什么好的解决方案吗?
1 magic961102 OP 手动置顶 |
![]() | 2 JinTianYi456 2021-02-04 22:58:36 +08:00 是不是这个? /t/737430 |
3 magic961102 OP @JinTianYi456 但是这个没有解决问题 |
4 magic961102 OP 或者有没有第三方的包能实现 |
5 luozic 2021-02-05 00:13:45 +08:00 写一个去除部分符号的编码方式。 |
![]() | 6 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.rintln(uriString); String decodeUriString = URLDecoder.decode(uriString, StandardCharsets.UTF_8.name()); System.out.println(decodeUriString); } |
![]() | 7 yksoft1test 2021-02-05 08:21:38 +08:00 把域名和路径分开编码,域名用 punycode,路径先 UTF8 化再 URLEncode 。 |
8 magic961102 OP @yksoft1test 分开比较麻烦,长链接传进来最好能完整处理 |
9 magic961102 OP @chendy 我一会试试看 |
10 magic961102 OP @luozic 看来自己写是最灵活的了 |