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

Java文件编码的问题

2016-06-15 00:06 701 查看
package coreJava;

import java.io.UnsupportedEncodingException;

public class EncodeDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String s = "慕课网ABC";
byte[] bytes1 = s.getBytes();//转换成字节序列用的是项目默认的编码gbk
for(byte b : bytes1){
//把字节(转换成了int)以16进制的方式显示
System.out.print(Integer.toHexString(b & 0xff)+" ");
}
System.out.println();
byte[] bytes2 =  s.getBytes("gbk");
//gbk编码中文占用2个字节,英文占用1个字节
for(byte b : bytes2){
System.out.print(Integer.toHexString(b & 0xff)+" ");
}
System.out.println();
byte[] bytes3 = s.getBytes("utf-8");
//utf-8编码中文占用3个字节,英文1个字节
for(byte b : bytes3){
System.out.print(Integer.toHexString(b & 0xff)+" ");
}
//java是双字节编码utf-16be
byte[] bytes4 = s.getBytes("utf-16be");
//utf-16be中文占用2个字节,英文占用2个字节
for(byte b : bytes4){
System.out.print(Integer.toHexString(b & 0xff)+" ");
}
System.out.println();
/*
* 当你的字节序列是某种编码时,这个时候想把字节序列变成
* 字符串,也需要用这种编码方式,否则会出现乱码
*/
String str1 = new String(bytes4);//用项目默认的编码
System.out.println(str1);
String str2 = new String(bytes4,"utf-16be");
System.out.println(str2);
/**
* 文本文件就是字节序列
* 可以是任意编码的字节序列
* 如果我们在中文机器上任意建文本文件,那么该文本文件只认识ansi编码
* 联通/联这是一种巧合,他们正好符合了utf-8编码的规则
*/

}
}


运行结果:

c4 bd bf ce cd f8 41 42 43
c4 bd bf ce cd f8 41 42 43
e6 85 95 e8 af be e7 bd 91 41 42 43 61 55 8b fe 7f 51 0 41 0 42 0 43
aU孇Q
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 编码