加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何正确编码此URL

发布时间:2020-12-14 05:54:31 所属栏目:Java 来源:网络整理
导读:我试图使用JSoup获取此URL http://betatruebaonline.com/img/parte/330/CIGUE?AL.JPG 即使使用编码,我也有例外. 我不明白为什么编码错了.它回来了 07001 而是正确的 07002 我怎么解决这个问题? 谢谢. private static void GetUrl(){ try { String url = "ht
我试图使用JSoup获取此URL

http://betatruebaonline.com/img/parte/330/CIGUE?AL.JPG

即使使用编码,我也有例外.
我不明白为什么编码错了.它回来了

07001

而是正确的

07002

我怎么解决这个问题?
谢谢.

private static void GetUrl()
{
    try
    {
        String url = "http://betatruebaonline.com/img/parte/330/";
        String encoded = URLEncoder.encode("CIGUE?AL.JPG","UTF-8");
        Response img = Jsoup
                            .connect(url + encoded)
                            .ignoreContentType(true)
                            .execute();

        System.out.println(url);
        System.out.println("PASSED");
    }
    catch(Exception e)
    {
        System.out.println("Error getting url");
        System.out.println(e.getMessage());
    }
}

解决方法

编码没有错,这里的问题是复合unicode&预组合的字符“?”可以用两种方式显示,它们看起来相同但真的不同
precomposed unicode: ?           -> %C3%91
composite unicode: N and ~       -> N%CC%83

我强调两个都是正确的,这取决于你想要的unicode类型:

String normalize = Normalizer.normalize("?",Normalizer.Form.NFD);
System.out.println(URLEncoder.encode("?","UTF-8")); //%C3%91
System.out.println(URLEncoder.encode(normalize,"UTF-8")); //N%CC%83

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读