本帖最后由 yonghang911 于 2014-05-14 14:34:38 编辑

解决方案 »

  1.   

    http://oyhk.iteye.com/blog/1759469
      

  2.   

    不行,搜索词编码后是%259d%2571%2566%259e%2554%2576%25a0%2560%2574%259e%2543%2561
    既不是utf-8,也不是gbk
      

  3.   

    看格式应该是这样对应
    %259d%2571%2566 中
    %259e%2554%2576 国
    %25a0%2560%2574 移
    %259e%2543%2561 动
      

  4.   

    String res1 = URLEncoder.encode("中","UTF-8");
    System.out.println(res1);

    String res2 = URLEncoder.encode(res1,"UTF-8");
    System.out.println(res2);结果:
    %E4%B8%AD
    %25E4%25B8%25AD看格式像是经过 2 次编码的
      

  5.   

    不是统一的问题,这个是百度搜索出来的url,我要在url中提取他的搜索词。提出来的搜索词是  %259d%2571%2566%259e%2554%2576%25a0%2560%2574%259e%2543%2561
    要把他转换为中文,现在问题是不知道是什么编码。直接在浏览器打开是现实搜索:中国移动。
      

  6.   

    http://www.baidu.com/#wd=%E4%B8%AD%E5%9B%BD%E7%A7%BB%E5%8A%A8&rsv_spt=1&rsv_bp=1&ie=utf-8&tn=baiduhome_pg&f=8&bs=%E4%B8%AD%E9%80%9A&rsv_n=2&rsv_sug3=1&rsv_sug2=0&inputT=1019
    经过url编码,也跟你说的不一样啊
      

  7.   


    你直接在浏览器打开http://m5.baidu.com/from=1089a/s?word=%259d%2571%2566%259e%2554%2576%25a0%2560%2574%259e%2543%2561&st=11104i&ts=4691535&sa=ih_2&ss=01&ix=404%25
    会看到是搜索 中国移动的
      

  8.   

    他这个 %259d%2571%2566%259e%2554%2576%25a0%2560%2574%259e%2543%2561
    他服务器utf-8 gbk
     估计传过去 解码之后自己再有一套自己规则解码才会 去检索
      

  9.   

    m5.baidu.com   地址 61.135.185.17
    www.baidu.com  地址  61.135.169.105
    当然百度的服务器有很多,你查看的地址有可能就和我的不一样了,
    我想说 m5 这个域名,是百度用来测试用的?
      

  10.   

    String str = URLDecoder.decode("http://www.baidu.com/#wd=%E4%B8%AD%E5%9B%BD%E7%A7%BB%E5%8A%A8&rsv_spt=1&rsv_bp=1&ie=utf-8&tn=baiduhome_pg&f=8&bs=%E4%B8%AD%E9%80%9A&rsv_n=2&rsv_sug3=1&rsv_sug2=0&inputT=1019");
    String str1 = new String(str.getBytes("gbk"), "utf-8");
    System.out.println(str1);
      

  11.   

    ---
    输出结果:
    http://www.baidu.com/#wd=中国移动&rsv_spt=1&rsv_bp=1&ie=utf-8&tn=baiduhome_pg&f=8&bs=中???&rsv_n=2&rsv_sug3=1&rsv_sug2=0&inputT=1019
      

  12.   

    http://www.zhihu.com/topic/19599871/newest
      

  13.   


    public static void main(String[] args) throws Exception {
    String url_0 = "%259d%2571%2566%259e%2554%2576%25a0%2560%2574%259e%2543%2561";
    //1 去掉 25
    String url_1 = "%9d%71%66%9e%54%76%a0%60%74%9e%43%61";

    String[] url_2 = url_1.split("%");

    StringBuilder url_3 = new StringBuilder();
    for(int i=1;i<url_2.length;i++){
    String str = url_2[i];
    String res = Integer.valueOf(str,16).toString();
    int intRes = Integer.parseInt(res);
    intRes = intRes+256;
    intRes = intRes-201;
    String str_16 = Integer.toHexString(intRes+16);注意这里 比 网上的 多加 了一个 16
    url_3.append("%"+str_16);
    }
    System.out.println(url_3.toString());
    String strRes = URLDecoder.decode(url_3.toString(),"UTF-8");
    System.out.println(strRes);
    }结果 :
    %e4%b8%ad%e5%9b%bd%e7%a7%bb%e5%8a%a8
    中国移动简单实现了一下,原理大概就是这样,按照帖子,+256 然后  -201 最后转 得出的结果刚好少了一个 16。加上之后能正确解析了。
      

  14.   


    确实是这样的,开始的时候我考虑到"%9d%71%66%9e%54%76%a0%60%74%9e%43%61"; 
    然后地下就是解析不出来。你怎么知道中间几次转换的。 
      

  15.   


    确实是这样的,开始的时候我考虑到"%9d%71%66%9e%54%76%a0%60%74%9e%43%61"; 
    然后地下就是解析不出来。你怎么知道中间几次转换的。 
    我也是 网上查的  http://www.zhihu.com/topic/19599871/newest
      

  16.   


    确实是这样的,开始的时候我考虑到"%9d%71%66%9e%54%76%a0%60%74%9e%43%61"; 
    然后地下就是解析不出来。你怎么知道中间几次转换的。 
    我也是 网上查的  http://www.zhihu.com/topic/19599871/newest