?写在前面 ?博客主页:努力的小鳴人 ?系列专栏:JavaSE超详总结😋 ?欢迎小伙伴们,点赞👍关注🔎收藏🍔一起学习! ?如有错误的地方,还请小伙伴们指正!🌹
🔥系列传送门: 【11章Java泛型】全面解读Java泛型【热榜】 【10章Java集合】几张脑图带你进入Java集合的头脑风暴 【09章Java注解】让你全面认识这未来潜力巨大的「注解」【热榜】 【08章Java枚举类】简单易懂的enum【热榜】 【07章Java常用类】盘点 Java常用类【热榜】
一、基础知识
- 位 bit 最小的单元
字节 byte 机器语言的单位 1byte=8bits 1KB=1024byte 1MB=1024KB 1GB=1024MB - 二进制 binary
八进制 octal 十进制 decimal 十六进制 hex - ●字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。
●字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。 ●字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多少字节 表示等问题,则是由编码来决定的。计算机要准确的处理各种字符集文字,需要进行字符编码, 以便计算机能够识别和存储各种文字。
二、ASCII
American Standard Code for Information Interchange 美国标准信息交换代码 用一个字节的7位可以表示
美国国家标准协会 ANSI 制定的一个标准,规定了常用字符的集合以及每个字符对应的编号,这就是 ASCII 字符集
- 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,它是现今最通用的单字节编码系统
- 0到31及127(共33个)是控制字符或通信专用字符(其余为可显示字符)
32到126(共95个)是字符(32是空格),其中48到57为0到9十个阿拉伯数字 65到90为26个大写英文字母 97到122号为26个小写英文字母 其余为一些标点符号、运算符号 - ASCII是美国标准,它不能良好满足其它讲英语国家的需要
三、ISO8859-1
拉丁码表。欧洲码表
单字节编码
- 向下兼容ASCII
其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号 - ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号
- ASCII编码是一个7位的容器,ISO-8859-1编码是一个8位的容器
- 因ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃,换言之,把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题
四、GB2312
信息交换用汉字编码字符集
- 中国的中文编码表:最多两个字节编码所有字符
- 收录六千七百六十三个汉字,其中一级汉字三千七百五十五个,二级汉字三千零八个
- 适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆
- 信息交换用汉字编码字符集和汉字输入编码之间的关系是,根据不同的汉字输入方法,通过必要的设备向计算机输入汉字的编码,计算机接收之后,先转换成信息交换用汉字编码字符,这时计算机就可以识别并进行处理
- 汉字输出是先把机内码转成汉字编码,再发送到输出设备
五、GBK
信息交换用汉字编码字符集--基本集 Chinese Internal Code Specification
- 中国的中文编码表升级,融合了更多的中文文字符号:最多两个字节编码
- GBK编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库
- GBK码对字库中偏移量的计算
公式 为: [(GBKH-0xB0)0x5E+(GBKL-0xA1)](汉字离散后每个汉字点阵所占用的字节) - 所有字符包括在a1到a9中a1到fe的部分及a8,a9中40~a0的部分,包括标点符号、数学符号、数字序号、全角数字字母、日文平假名、片假名、希腊字母、俄文字母、图形符号、制表符、拼音、注音符号等
六、Unicode
国际标准码 所有的文字都用两个字节来表示
- Unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等
- 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求
- 目前的Unicode字符分为17组编排,0x0000至0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案
传送门🔥 >>> Unicode字符列表
七、UTF-8
- UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式 如下:
- 特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同
- 变长的编码方式,
可用1-4个字节来表示一个字符 - 例1:"汉"字的Unicode编码是0x6C49
0x6C49在0x0800-0xFFFF之间,使用3字节模板:1110xxxx 10xxxxxx 10xxxxxx 将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x 得到:11100110 10110001 10001001,即E6 B1 89
🎁总结:多种字符编码集的说明了解了解心中有数嘿嘿 👌 作者算是一名Java初学者,文章如有错误,欢迎评论私信指正,一起学习~~ 😊如果文章对小伙伴们来说有用的话,点赞👍关注🔎收藏🍔就是我的最大动力! 🚩不积跬步,无以至千里,书接下回,欢迎再见🌹
|