java中编码问题的处理方案

 更新时间:2015年07月08日 10:22:06   投稿:hebedich  
这篇文章主要介绍了java中编码问题的处理方案的相关资料,需要的朋友可以参考下

首先我使用的开发环境是Eclipse.创建一个Java Project默认的编码则为GBK,如图:

下面便是具体代码:

import java.io.UnsupportedEncodingException;

public class Demo1 {
  public static void main(String[] args) throws UnsupportedEncodingException {
    String s = "我爱ABC";
    byte[] bytes1 = s.getBytes("gbk");//不写编码,则使用平台的默认字符集将此 String 编码为 byte序列,并返回byte[].
    //s.getBytes(Charset charset) 使用给定的charset将此String编码到byte序列;
    //返回的是一个byte[]字节数组
    
    for(byte b: bytes1){
      System.out.print(Integer.toHexString(b&0xff)+" ");
      //Integer.toHexString(int i)以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式
    }
    //gbk编码中文占有两个字节,英文占有一个字节
    System.out.println();
    byte[] bytes2 = s.getBytes("utf-8");
    for(byte b: bytes2){
      System.out.print(Integer.toHexString(b&0xff)+" ");
    }
    //utf-8编码 中文占有三个字节,英文占有一个字节
    System.out.println();
    //java是双字节编码 --->utf-16be >> 中文和英文都占有两个字节
    byte[] bytes3 = s.getBytes("utf-16be");
    for(byte b: bytes3){
      System.out.print(Integer.toHexString(b&0xff)+" ");
    }
    
    /*当你的字节序列是某种编码时,这个时候想把字节序列变成
     *字符串,也需要用这种编码方式,否则会出现乱码
     * */
    System.out.println();
    String str1 = new String(bytes3);//用项目默认的编码即(GBK编码) ----->> bytes3在上面定义成“utf-16be”的编码了,所以会出现乱码
    System.out.println(str1);
    System.out.println();
    
    String str2 = new String(bytes3,"utf-16be");
    System.out.println(str2);
    
   /*
    * 文本文件就是字节序列
    * 可以是任意编码的字节序列
    * 如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码
    * 
   */  
  }
}

打印的结果:

总的来说,编码必须对应,不然会出现乱码。

相关文章

  • java变量的区别浅析

    java变量的区别浅析

    对于java的变量天天见到,但有时候别人问起它们的区别有时候也说不全,所以就找了些资料整理了整理...
    2013-12-12
  • 一场由Java中Integer引发的踩坑实战

    一场由Java中Integer引发的踩坑实战

    Java中的数据类型分为基本数据类型和复杂数据类型int是前者而integer是后者(也就是一个类),下面这篇文章主要给大家介绍了关于由Java中Integer引发的踩坑实战,需要的朋友可以参考下
    2022-11-11
  • Java实现爬虫给App提供数据(Jsoup 网络爬虫)

    Java实现爬虫给App提供数据(Jsoup 网络爬虫)

    这篇文章主要介绍了Java实现爬虫给App提供数据,即Jsoup 网络爬虫,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • mybatis-puls中的resultMap数据映射

    mybatis-puls中的resultMap数据映射

    这篇文章主要介绍了mybatis-puls中的resultMap数据映射,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 微信公众帐号开发教程之图文消息全攻略

    微信公众帐号开发教程之图文消息全攻略

    本篇主要介绍微信公众帐号开发中图文消息的使用,以及图文消息的几种表现形式。标题取名为"图文消息全攻略",这绝对不是标题党,是想借此机会把大家对图文消息相关的问题、疑虑、障碍全部清除掉。
    2016-12-12
  • Java 实战项目之在线点餐系统的实现流程

    Java 实战项目之在线点餐系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个在线点餐系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Spring中@Scheduled注解的参数详解

    Spring中@Scheduled注解的参数详解

    这篇文章主要介绍了Spring中@Scheduled注解的参数详解,@Scheduled注解的使用这里不详细说明,@Scheduled注解有几个参数需要说明一下,直接对8个参数进行讲解,需要的朋友可以参考下
    2023-11-11
  • 浅谈Springboot整合RocketMQ使用心得

    浅谈Springboot整合RocketMQ使用心得

    本篇文章主要介绍了Springboot整合RocketMQ使用心得,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • java实现简单中国象棋

    java实现简单中国象棋

    这篇文章主要为大家详细介绍了java实现简单中国象棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • emoji表情与unicode编码互转的实现(JS,JAVA,C#)

    emoji表情与unicode编码互转的实现(JS,JAVA,C#)

    这篇文章主要介绍了emoji表情与unicode编码互转的实现(JS,JAVA,C#),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论