V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
magic961102
V2EX  ›  Java

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

  •  
  •   magic961102 · 2021-02-04 22:28:03 +08:00 · 2107 次点击
    这是一个创建于 1169 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    10 条回复    2021-02-05 09:02:37 +08:00
    magic961102
        1
    magic961102  
    OP
       2021-02-04 22:54:00 +08:00 via Android
    手动置顶
    JinTianYi456
        2
    JinTianYi456  
       2021-02-04 22:58:36 +08:00
    是不是这个? /t/737430
    magic961102
        3
    magic961102  
    OP
       2021-02-04 23:03:39 +08:00 via Android
    @JinTianYi456 但是这个没有解决问题
    magic961102
        4
    magic961102  
    OP
       2021-02-04 23:42:27 +08:00 via Android
    或者有没有第三方的包能实现
    luozic
        5
    luozic  
       2021-02-05 00:13:45 +08:00
    写一个去除部分符号的编码方式。
    chendy
        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.println(uriString);
    String decodeUriString = URLDecoder.decode(uriString, StandardCharsets.UTF_8.name());
    System.out.println(decodeUriString);
    }
    yksoft1test
        7
    yksoft1test  
       2021-02-05 08:21:38 +08:00
    把域名和路径分开编码,域名用 punycode,路径先 UTF8 化再 URLEncode 。
    magic961102
        8
    magic961102  
    OP
       2021-02-05 09:01:54 +08:00 via Android
    @yksoft1test 分开比较麻烦,长链接传进来最好能完整处理
    magic961102
        9
    magic961102  
    OP
       2021-02-05 09:02:02 +08:00 via Android
    @chendy 我一会试试看
    magic961102
        10
    magic961102  
    OP
       2021-02-05 09:02:37 +08:00 via Android
    @luozic 看来自己写是最灵活的了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2719 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 00:22 · PVG 08:22 · LAX 17:22 · JFK 20:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.