|
定义
|
结合java
|
注意
|
|
字符集合
|
一组各类形状的集合,相似仓颉造的字,没有实际含义,只是一个有独一无二的形状。就像牢房里面的囚犯,每一个人都是独一无二的。
|
计算机要显示文字图案,对于全部显示的文字图案,均可以看作一个字符。
字符集合是基于操做系统的,有个相似字符库,来保存全部会出现的字符。这里是指显示,实际保存仍是一串二进制数。
|
没啥注意的都是固定的。
|
|
字符集合的
编码
|
上面的每一个形状,给他一个惟一标识,一对一的关系,就像每一个囚犯都有惟一的一个编号。
|
有不少规则,规定每一个字符对应什么数字。咱们熟知的有Assis码,中国的规则有gb2312 ,统一的是 unicode ,java内部用的是 unicode。例如‘A’,Assis码中用65表示。
最先只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。一个字节。
,unicode 通常占两个字节。
java 中 定义的char类型字符,就是占两个字节。
|
变量在java程序中,咱们定义的基本类型,char 就只用2个字节存储。
|
|
字符集合的 编码 的
编码方案
|
再对上面的惟一标识作一次处理,定义一个规则,每一个数字按照规则,转换成一个新的标识。每一个监狱劳动改造的规则不同,有的监狱,超过60岁少作点,有的超过70岁少作点
|
要把上面规定好的 字符的编码 存储到计算机中,也就是以2进制保存起来,
例如
上面的A字符对应 字符的编码 65 ,二进制就是 0
100 0001,用8位保存到计算机磁盘中。
我这里只作了简单的转换,实际上,人们制定了不少规则,将 字符的编码
65 转换成 1-n个字节保存。
规则有定长的:每一个字符的编码用统一长度字节保存,好比都用3个字节保存。
不定长的:典型的就是utf-8,用
1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节。
|
数据持久化,保存到磁盘中,都是字节为基本单位。
按照编码方案,将程序中的 字符的编码 转换成 可以存储到本地的 字节数组 这个状况叫作编码。
相反 ,咱们从磁盘或者其余路径获得一个字节数组,按照编码方案,将其转换成 一个数字,也就是字符的编码,这个过程叫作解码。
|
|
步骤
|
1
|
2
|
3
|
4
|
编码
|
字符,java中显示
中
|
字符集合的 编码,
unicode查找 java中实际存储
230013
|
![]() ![]() |
java中的方法 :将 字符集合的编码 一个数值转化 成一个字节数组
byte[] bytes = String.valueOf(c2).getBytes("utf-8");
{-28,-72,-83}
|
解码
|
一个字节数组{-28,-72,-83} |
字符集合的 编码 的编码方案
用gbk解码,就是把这个字节数组按照gbk的方式
获得一个 xxxx 数字(在这里我不知道)
|
根据xxxx,经过unicode查找 显示的
![]() ![]() |
java中,将 字节数组 转换 成一个数值String a = new String(bytes,"gbk")
这里注意我用的是一个 String接受,String 能够转化成char[]
![]() ![]()
这每一个字符其实,在java中就是一个数字,就像230013同样。
因为编码和解码方式不同 就致使了乱码
|