1 package coreJava; 2 3 import javax.swing.plaf.synth.SynthSpinnerUI; 4 5 public class EncodeDemo { 6 7 public static void main(String[] args) throws Exception { 8 // TODO Auto-generated method stub 9 10 String s = "慕课ABC"; 11 byte[] bytes1 = s.getBytes();//转换成字节序列用的是项目默认的编码gbk 12 for(byte b: bytes1){ 13 //把字节转换成(int)以十六进制的方式显示 14 System.out.print(Integer.toHexString(b & 0xff)+" "); 15 16 } 17 18 System.out.println(); 19 byte[] bytes2 = s.getBytes("gbk"); 20 for(byte b:bytes2){ 21 System.out.print(Integer.toHexString(b & 0xff)+" "); 22 //gbk编码,中文占两个字节,英文占一个字节 23 } 24 25 System.out.println(); 26 byte[] bytes3 = s.getBytes("utf-8"); 27 for(byte b: bytes3){ 28 //utf-8编码中文占用三个字节,英文占用一个字节 29 System.out.print(Integer.toHexString(b & 0xff)+" "); 30 } 31 32 //Java是双字节编码 utf-16be:(中文和英文都占用两个字节) 33 byte[] bytes4 =s.getBytes("utf-16be"); 34 for(byte b: bytes4){ 35 System.out.print(Integer.toHexString(b & 0xff)+" "); 36 } 37 System.out.println(); 38 /** 39 * 当你的字节序列是某种编码时,这个时候想把字节序列变成字符串 40 * 也需要用这种编码方式,否则会出现乱码 41 */ 42 String str = new String(bytes4);//用项目默认的编码格式 43 System.out.println(str); 44 String str2 = new String(bytes4,"utf-16be"); 45 System.out.println(str2); 46 47 /** 48 * 文本文件放的就是字节序列, 49 * 可以使任意编码的字节序列 50 * 我们可以在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码 51 * 联通,联这是一种巧合,他们符合了utf-8的编码规则。 52 */ 53 } 54 55 }