【附章5计算机字符编码】多种字符编码集的说明

❤写在前面
❤博客主页:努力的小鳴人
❤系列专栏:JavaSE超详总结😋
❤欢迎小伙伴们,点赞👍关注🔎收藏🍔一起学习!
❤如有错误的地方,还请小伙伴们指正!🌹

🔥系列传送门JavaSE超详总结😋
【11章Java泛型】全面解读Java泛型【热榜】
【10章Java集合】几张脑图带你进入Java集合的头脑风暴
【09章Java注解】让你全面认识这未来潜力巨大的「注解」【热榜】
【08章Java枚举类】简单易懂的enum【热榜】
【07章Java常用类】盘点 Java常用类【热榜】
在这里插入图片描述


一、基础知识

  1. 位 bit 最小的单元
    字节 byte 机器语言的单位 1byte=8bits
    1KB=1024byte
    1MB=1024KB
    1GB=1024MB
  2. 二进制 binary
    八进制 octal
    十进制 decimal
    十六进制 hex
  3. 字符是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。
    字符集字符集是多个符号的集合,每个字符集包含的字符个数不同。
    字符编码字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多少字节
    表示等问题,则是由编码来决定的。计算机要准确的处理各种字符集文字,需要进行字符编码,
    以便计算机能够识别和存储各种文字。

二、ASCII

American Standard Code for Information Interchange
美国标准信息交换代码
用一个字节的7位可以表示

美国国家标准协会 ANSI 制定的一个标准,规定了常用字符的集合以及每个字符对应的编号,这就是 ASCII 字符集

  1. 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,它是现今最通用的单字节编码系统
  2. 0到31及127(共33个)是控制字符或通信专用字符(其余为可显示字符)
    32到126(共95个)是字符(32是空格),其中48到57为0到9十个阿拉伯数字
    65到90为26个大写英文字母
    97到122号为26个小写英文字母
    其余为一些标点符号、运算符号

    在这里插入图片描述
  3. ASCII是美国标准,它不能良好满足其它讲英语国家的需要

三、ISO8859-1

拉丁码表。欧洲码表

单字节编码

  1. 向下兼容ASCII
    其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号
  2. ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号
  3. ASCII编码是一个7位的容器,ISO-8859-1编码是一个8位的容器
  4. 因ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃,换言之,把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题
    在这里插入图片描述

四、GB2312

信息交换用汉字编码字符集

  1. 中国的中文编码表:最多两个字节编码所有字符
  2. 收录六千七百六十三个汉字,其中一级汉字三千七百五十五个,二级汉字三千零八个
  3. 适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆
  4. 信息交换用汉字编码字符集和汉字输入编码之间的关系是,根据不同的汉字输入方法,通过必要的设备向计算机输入汉字的编码,计算机接收之后,先转换成信息交换用汉字编码字符,这时计算机就可以识别并进行处理
  5. 汉字输出是先把机内码转成汉字编码,再发送到输出设备

五、GBK

信息交换用汉字编码字符集--基本集
Chinese Internal Code Specification

  1. 中国的中文编码表升级,融合了更多的中文文字符号:最多两个字节编码
  2. GBK编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库
  3. GBK码对字库中偏移量的计算公式为:
    [(GBKH-0xB0)0x5E+(GBKL-0xA1)](汉字离散后每个汉字点阵所占用的字节)
  4. 所有字符包括在a1到a9中a1到fe的部分及a8,a9中40~a0的部分,包括标点符号、数学符号、数字序号、全角数字字母、日文平假名、片假名、希腊字母、俄文字母、图形符号、制表符、拼音、注音符号等

六、Unicode

国际标准码
所有的文字都用两个字节来表示

  1. Unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等
  2. 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求
  3. 目前的Unicode字符分为17组编排,0x0000至0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案

传送门🔥 >>> Unicode字符列表

七、UTF-8

  1. UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式 如下:
    在这里插入图片描述
  2. 特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同
  3. 变长的编码方式可用1-4个字节来表示一个字符
  4. 例1:"汉"字的Unicode编码是0x6C49
    0x6C49在0x0800-0xFFFF之间,使用3字节模板:1110xxxx 10xxxxxx 10xxxxxx
    将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x
    得到:11100110 10110001 10001001,即E6 B1 89

🎁总结:多种字符编码集的说明了解了解心中有数嘿嘿
👌 作者算是一名Java初学者,文章如有错误,欢迎评论私信指正,一起学习~~
😊如果文章对小伙伴们来说有用的话,点赞👍关注🔎收藏🍔就是我的最大动力!
🚩不积跬步,无以至千里书接下回,欢迎再见🌹

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的小鳴人

鳴人将永远记住您的恩惠

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值