magic961102
V2EX  ›  Java

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

  •  
  •   magic961102 · Feb 4, 2021 · 3511 views
    This topic created in 2097 days ago, the information mentioned may be changed or developed.

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

    10 replies  •  2021-02-05 09:02:37 +08:00
    magic961102
    magic961102
    OP
    Feb 4, 2021 via Android
    1
    手动置顶
    JinTianYi456
    JinTianYi456
    Feb 4, 2021
    2
    是不是这个? /t/737430
    magic961102
    magic961102
    OP
    Feb 4, 2021 via Android
    3
    @JinTianYi456 但是这个没有解决问题
    magic961102
    magic961102
    OP
    Feb 4, 2021 via Android
    4
    或者有没有第三方的包能实现
    luozic
    luozic
    Feb 5, 2021
    5
    写一个去除部分符号的编码方式。
    chendy
    chendy
    Feb 5, 2021
    6
    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
    yksoft1test
    Feb 5, 2021
    7
    把域名和路径分开编码,域名用 punycode,路径先 UTF8 化再 URLEncode 。
    magic961102
    magic961102
    OP
    Feb 5, 2021 via Android
    8
    @yksoft1test 分开比较麻烦,长链接传进来最好能完整处理
    magic961102
    magic961102
    OP
    Feb 5, 2021 via Android
    9
    @chendy 我一会试试看
    magic961102
    magic961102
    OP
    Feb 5, 2021 via Android
    10
    @luozic 看来自己写是最灵活的了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1272 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:09 · PVG 05:09 · LAX 13:09 · JFK 16:09
    ♥ Do have faith in what you're doing.