如果
    String testStr=URLDecoder.decode("%E6%B5%8B%E8%AF%95%E6%8E%A5%E5%8F%A3","utf-8");
则testStr="测试接口"
否则如果
    String testStr=URLDecoder.decode("%E6%B5%8B%E8%AF%95%E6%8E%A5%E5%8F%A3","gb2312");
则testStr=“娴?璇???ュ?? ”问:
采用第二种方式之后,如何把testStr中的乱码还原,即="测试接口"

解决方案 »

  1.   

    无法还原,你原来的字符串本身就是以"utf-8"编码而得到得类似这样
    "%E6%B5%8B%E8%AF%95%E6%8E%A5%E5%8F%A3",如果以"gb2312"来解码肯定结果不同(解码后的?说明了有些字符在gb2312编码下是无法显示的),如果原来是这样的字符串:"测试接口",那经过两次转变之后还是有可能还原的
      

  2.   

    无法还原,utf-8码到gb字节会丢失啊.
      

  3.   

    上面两位仁兄说的对,就象我以前碰到的问题一样,俺们的技术总监叫我把数据库里面的乱码想个办法转换成正确的,我找了N中方法,找了m个地方都没有找到能解决的办法,最后得到:无法还原,utf-8码到gb字节会丢失啊.
      

  4.   

    无法还原,部分信息已经丢失了。最多只能还原成类似“测?接?”这样部分还原的效果。如果你们总监坚持要你这么做,推荐你和你的总监参考一篇文章:
    http://www.regexlab.com/zh/encoding.htm