Java知识点<10>常见的编码格式
2018-03-10 17:19
381 查看
编码
计算机中存储信息的最小单元是一个字节,即8个bit,所以能表示的字符范围是0~255个人类要表示的符号太多,无法用一个字节来完全表示
要解决这个矛盾必须要有一个新的数据结构char,从char到byte必须编码。目前常用的编码方式有ASCII、ISO8859-1、GB2312、GBK、UTF-8、UTF-16等
ASCII码
共有128个,用一个字节的低7位表示0~31 控制字符 如换行、回车、删除32~126 打印字符
ISO8859-1
在ASCII码的基础上涵盖了大多数西欧语言字符,仍然是单字节编码,它总共能表示256个字符GB2312
全称为《信息交换用汉字编码字符集基本集》,它是双字节编码,总的编码范围是A1~F7A1~A9 ·符号区B0~F7 汉字区
GBK
全称《汉字内码扩展规范》,扩展了GB2312,加入更多的汉字,它的编码范围是8140~FEFE(去掉XX7F),与GB2312兼容GB18030
《数字交换用汉字编码字符集》,它可能是单字节、双字节或者四字节编码,与GB2312编码兼容UTF-16
具体定义了Unicode字符在计算机中的存取方法。采用2字节来表示Unicode转化格式,它是定长的表示方法,不论什么字符都可以用两个字节表示UTF-8编码规则
UTF-8采用一种变长技术,每个编码区域有不同的字码长度,不同的字符可以由1~6个字节组成。编码规则如下:如果一个字节,最高位为0,表示这是一个ASCII字符(00~7F)如果一个字节,以11开头,连续的1的个数暗示这个字符的字节数
如110xxxxx代表它是双字节UTF-8字符的首字母如果一个字节,以10开始,表示它不是首字节,需要向前查找才能得到当前字符的首字节
如下:在一个文件中通过UTF-8编码,输入“中国”保存后,通过如下代码读取[java] view plain copyFile f = new File("F:/study/test/test.txt");
try {
FileInputStream input = new FileInputStream(f);
//BufferedReader reader = new BufferedReader(new InputStreamReader(input));
int i;
while((i=input.read())!=-1){
System.out.println(Integer.toBinaryString(i));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
输出如下结果:11100100
10111000
10101101
11100101
10011011
10111101从中可以看出,这两个汉字均占用三个字节存储
字节-字符转变
[java] view plain copyString a = "中国";Charset charset = Charset.forName("UTF-8");
ByteBuffer byteBuffer = charset.encode(a);
while(byteBuffer.hasRemaining()){
byte b = byteBuffer.get();
String s = Integer.toBinaryString((b & 0xFF) + 0x100).substring(1);
System.out.println(s);
}
如上所示,为byte获取其在内存中存储的二进制形式的方法。
相关文章推荐
- Java几种常见的编码格式
- 识别常见编码格式文件并转换成UTF-8编码 的java实现 源码
- JAVA几种常见的编码格式
- JAVA几种常见的编码格式(转)
- Java几种常见的编码格式
- JAVA几种常见的编码格式(转)
- JAVA几种常见的编码格式
- Java几种常见的编码格式
- Java几种常见的编码格式
- 识别常见编码格式文件并转换成UTF-8编码的java实现
- Java几种常见的编码格式
- Java中常见编码格式
- java中常见的中文编码格式
- JAVA几种常见编码格式
- 如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程
- java判断文本文件编码格式以及读取
- JAVA常见的编码问题
- Java JVM使用哪种编码格式
- java--Map集合常见遍历格式代码
- java爬虫爬取网页内容前,对网页内容的编码格式进行判断的方式