package cn.itstudy.encode;
import java.io.UnsupportedEncodingException;
public class EncodeDemo {
public static void main(String[] args) {
String s = "你好abc";
byte[] byte1 = s.getBytes();
//转换成字节序列用的是项目默认的编码,这里设置的编码是utf-8
//utf-8 中文编码3个字节,英文占用一个字节
for(byte b: byte1){
//把字节(转成了int)以十六进制的方式显示
System.out.print(Integer.toHexString(b&0xff));
//把bytezhuan成int,后8位前填24个0转成32位
}
System.out.println();
byte[] byte2;
try {
//gbk中文占用两个字节,英文占用一个字节
byte2 = s.getBytes("gbk");//这里可以改编码格式
//
for(byte b: byte2){
System.out.print(Integer.toHexString(b&0xff));
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println();
//java是双字节编码utf-16be,中英文都占用两个
/*
* 当你的字节序列是某种编码时,这时候想把字节序列变成字符串,
* 也需要用这种编码方式,否则会出现乱码
*/
byte[] byte4 = s.getBytes();
String str1 = new String(byte4); //用项目默认的编码
System.out.println(str1); //显示你好abc
String str2;
try {
str2 = new String(byte4,"utf-16be"); //与字符编码不一致会出现乱码
System.out.println(str2);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
* 文本文件就是字节序列
* 可以是任意编码的字节序列
* 如果我们在中文机器上直接创建文本文件,
* 那么该文本文件只认识ansi编码
*/
}
}
java I/O流(1)编码
最新推荐文章于 2023-03-21 14:46:15 发布