最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • java中GBK转UTF-8乱码的解决方法_Java教程


    java中GBK转UTF-8乱码的解决方法

    如果自己采用的是GBK编码,对方采用得到是UTF-8编码,发送数据时需要将GBK编码数据转换成UTF-8编码数据,这样对方才不会乱码。

    问题出现:GBK转UTF-8时,奇数个中文会乱码,偶数个中文不会乱码。

    原因分析:

    public static void analyze() throws UnsupportedEncodingException {
    String gbk = "我来了";
    String utf8 = new String(gbk.getBytes("UTF-8"));
    for (byte b : gbk.getBytes("UTF-8")) {
    System.out.print(b + " ");
    }
    System.out.println();
    for (byte b : utf8.getBytes()) {
    System.out.print(b + " ");
    }
    }
    /*
    -26 -120 -111 -26 -99 -91 -28 -70 -122
    -26 -120 -111 -26 -99 -91 -28 -70 63 !
    */

    注意最后一个字节不同,上面一行才是正确的UTF-8编码。那么为什么下面一行最后一个字节是63,而不是-122呢?这就是导致乱码的原因所在。

    GBK编码是一个中文2个字节,而UTF-8编码是一个中文3个字节,当我们调用getBytes("UTF-8")方法时,会通过计算来增加字节,使得从GBK的2个字节变成UTF-8对应的3个字节。因此,上例3个中文输出了9个字节。

    (相关视频教程分享:java视频教程

    解决问题

    保证字节正确才是硬道理。当调用getBytes("UTF-8")转换成字节数组后,创建ISO-8859-1编码的字符串,ISO-8859-1编码是一个字节对应一个字符,因此不会使最后一个字节错误。

    public static void correctEncode() throws UnsupportedEncodingException {
    String gbk = "我来了";
    String iso = new String(gbk.getBytes("UTF-8"),"ISO-8859-1");
    for (byte b : iso.getBytes("ISO-8859-1")) {
    System.out.print(b + " ");
    }
    System.out.println();
    //模拟UTF-8编码的网站显示
    System.out.println(new String(iso.getBytes("ISO-8859-1"),"UTF-8"));
    }
    /*
    -26 -120 -111 -26 -99 -91 -28 -70 -122
    我来了
    */

    以上就是java中GBK转UTF-8乱码的解决方法的详细内容,更多请关注liyege.cn其它相关文章!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1154会员总数(位)
    • 111856资源总数(个)
    • 6本周发布(个)
    • 0 今日发布(个)
    • 240稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    侵权联系邮箱[email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐