/*
* 当字节序列是某种编码时,这时候想把字节序列变成字符串时,也需要用这种编码方式,否则会出现乱码。
* 文本文件 就是字节序列 可以是任意编码的字节序列
* 如果在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码(将其他编码文本文件直接粘贴在机器上都认识)
* 在项目中(项目什么编码,文本就什么编码) 文字内容粘贴过去会自动做出转换
*/
public class EncodeDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String s = "编码ABC";
//转换为字节序列用的是项目默认编码utf-8
byte[] bytes1 = s.getBytes();
for (byte b : bytes1) {
//Integer.toHexString() 把字节转换为(int) 以16进制 的方式显示 byte->int 把后八位前面添24个0 变成32位 变成四个字节
// &0xff 把前面24个0 去掉
System.out.print(Integer.toHexString(b & 0xff)+" ");
}
System.out.println();
//utf-8 中文占三个字节,英文占一个字节
byte[] bytes2 = s.getBytes("utf-8");
for (byte b : bytes2) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
//gbk 中文占2个字节 英文占1个字节
byte[] bytes3 = s.getBytes("gbk");
for (byte b : bytes3) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
//java是双字节编码 中英文都占2个字节
byte[] bytes4 = s.getBytes("utf-16be");
for (byte b : bytes4) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
//没用相同的编码方式
String str1 = new String(bytes4);
System.out.print(str1);
System.out.println();
//用相同的编码方式
String str2 = new String(bytes4,"utf-16be");
System.out.print(str2);
}
}
文件的编码
最新推荐文章于 2022-05-13 11:54:02 发布