Java攻城狮的入门课程程序员

(一)文件的编码

2017-02-28  本文已影响360人  黒猫

1、编码格式介绍

更详细的说明可以参考网页编码


2、编码之间的区别(以代码为例)


import java.io.UnsupportedEncodingException;

public class EncodeDemo {
public static void main(String[] args) throws Exception {   

String s = "简书ABC";
byte[] bt1 = s.getBytes();
//此处将字符串转换成字节序列用的是项目默认编码gbk
for(byte b: bt1){
//把字节转换成了int,以16进制显示
    System.out.print(Integer.toHexString(b&0xff)+"  ");
//(bc  f2)简(ca  e9)书(41)A(42)B(43)C
}


System.out.println();
//gbk编码,中文占用2个字节,英文占用1个字节。
byte[] bt2 = s.getBytes("gbk");
for(byte b: bt2){
    System.out.print(Integer.toHexString(b&0xff)+"  ");
//(bc  f2)简(ca  e9)书(41)A(42)B(43)C
}


System.out.println();
//utf-8编码,中文占用3个字节,英文占用1个字节。
byte[] bt3 = s.getBytes("utf-8");
for(byte b: bt3){
    System.out.print(Integer.toHexString(b&0xff)+"  ");
//(e7  ae  80)简(e4  b9  a6)书(41)A(42)B(43)C     
}


System.out.println();
//java采用双字节编码,即utf-16be编码
byte[] bt4 = s.getBytes("utf-16be");
//utf-16be编码,中文占用2个字节,英文占用2个字节。
for(byte b: bt4){
    System.out.print(Integer.toHexString(b&0xff)+"  ");
//(7b  80)简(4e  66)书(0  41)A(0  42)B(0  43)C
}


System.out.println();
/*
当字节序列使用某种编码时
此时想把字节序列转变为字符串
也需要使用这种编码形式
否则会出现乱码。
*/
String str1 = new String(bt4);//此时为项目默认编码gbk
System.out.println(str1);//{?Nf A B C

String str2 = new String(bt4,"utf-16be");
System.out.println(str2);//简书ABC
}   
}


版权声明:欢迎转载,欢迎扩散,但转载时请标明作者以及原文出处,谢谢合作!             ↓↓↓
上一篇 下一篇

猜你喜欢

热点阅读