您的位置:首页 > 编程语言 > Java开发

java IO 字符编码相关

2015-09-01 22:33 666 查看
gbk编码: 中文占用两个字节,英文占用一个字节

utf-8编码:中文占用三个字节,英文占用一个字节

java是双字节编码,是utf-16be编码

utf-16be编码:中文占用两个字节,英文占用两个字节

当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码

package jn.io;

import java.io.UnsupportedEncodingException;

public class EncodeDemo {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String s = "江南AB";
byte[] bytes1 = s.getBytes();
for(byte b:bytes1){
System.out.print(Integer.toHexString(b & 0xff)+"  ");
}
System.out.println();
System.out.println("gbk的编码");
byte[] bytes2 = s.getBytes("gbk");
for(byte b:bytes2){
System.err.print(Integer.toHexString(b & 0xff)+"  ");
}
System.out.println("\n utf-8 的编码:");
byte[] bytes3 =s.getBytes("utf-8");
for(byte b:bytes3){
System.out.print(Integer.toHexString(b &0xff)+"  ");
}

System.out.println("\njava 的编码是utf-16  中文占用2个直接,英文也是占用两个字节");
byte[] bytes4 =s.getBytes("utf-16");
for(byte b:bytes4){
System.out.print(Integer.toHexString(b &0xff)+"  ");
}

System.out.println("\n当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码");

String string1 = new String(bytes4);
System.out.println(string1);
String string2 = new String(bytes4,"utf-16");
System.out.println(string2);
/**
* 文本文件 就是字节序列
* 可以放 任意编码的字节序列
*
* 中文系统下ANSI编码代表GBK 电脑上新建文本格式文件,只认识ansi编码;复制的来的文件什么编码都可以,但它的编码也是和原编码一致。
*/

}

}


输出的结果:

bd ad c4 cf 41 42 bd ad c4 cf 41 42

gbk的编码

utf-8 的编码:

e6 b1 9f e5 8d 97 41 42

java 的编码是utf-16 中文占用2个直接,英文也是占用两个字节

fe ff 6c 5f 53 57 0 41 0 42

当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码

?l_SW
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: