Java IO流 序列列一:字符编码
2014-11-09 14:48
155 查看
1. 字符编码
先来看一下不同的字符编码String s = "爪哇ABC";
1.1 utf-8编码
utf8编码:中文占用3个字节,英文占用1个字节byte[] bytes = s.getBytes("utf-8");
for(byte b : bytes){
//把字节(转换成了int)以16字节的方式显示
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();//换行
输出:e6 85 95 e8 af be 41 42 43
1.2 gbk编码
gbk编码:中文占用2个字节,英文占用1个字节byte[] bytes2 = s.getBytes("gbk");
for (byte b : bytes2) {
System.out.print(Integer.toHexString(b & 0xff) + " " );
}
System.out.println();
输出:c4 bd bf ce 41 42 43
1.3 utf-16be编码
utf-16be编码是Java的编码格式,中文占用2个字节,英文中文占用2个字节byte[] bytes3 = s.getBytes("utf-16be");
for (byte b : bytes3) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
System.out.println();
输出:61 55 8b fe 0 41 0 42 0 43
1.4 乱码问题
造成乱码问题的原因很简单,是因为编解码采用的字符编码不一致造成的。如:上面的bytes3字节数据是utf-16be格式的字节序列,如果解码的时候用utf-8的话,就会出现乱码。String str1 = new String(bytes3);
System.out.println(str1);
输出:aU��
如何解决乱码问题呢? 方法也很简单,就是让编解码采用的字符编码一致即可。
String str2 = new String(bytes3, "utf-16be");
System.out.println(str2);
1.5 文本文件
* 文本文件就是字节序列,可以是任意编码的字节序列* 如果在中文机器上创建文本文件,那么该文本文件只认识ANSI编码
相关文章推荐
- java--io流-打印流,序列流,操作对象,管道流,RandomAccessFile,操作字节数组
- JAVA学习第五十四课 — IO流(八)打印流 & 序列流
- 黑马程序员_Java基础_IO流(对象序列化和字符编码)
- JAVA File类、IO流体验与简介(字节流、字符流、序列流、打印流、编码、递归)
- java基础之IO转换流--OutputStreamWriter(字符流通往字节流,可以指定字符编码的IO流对象)
- Java基础视频教程第21天_IO流之其他流对象、字符编码
- JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码
- java IO流 ObjectStream PipedStream 随机访问文件 字符编码--21
- Java---IO流之序列流(文件合并)
- java-IO流-字符编码
- 黑马程序员--Java基础学习(IO流及字符编码)第二十一天
- Java IO流系列(补)—— 打印流、序列流、对象流
- Java精选笔记_IO流(转换流、常用流、流操作规律、字符编码)
- 黑马程序员——Java基础IO流概述、字符流、字节流、流操作规律、File类、Properties类、打印流、序列流
- JAVA基础 day23 IO流的其他类 (对象的序列化 管道流 RandomAccessFile类(随机读取文件) DateStream(操作基本数据类型的流) 操作数组的流 )字符编码问题
- 黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等
- Java基础 IO流 File Properties PrintWriter 序列流SequenceInputStream
- javaday52_IO流_打印流PrintStream和序列流SequenceInputStream
- JAVA基础学习(二十二)--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码
- 关于Java和MySQL中文字符编码问题