2022年码表49码排码图,2022 年牛年生肖表
最后更新 :2021.11.13 22:53
2022年码表49码排码图
前言
在我的工作中,常常会遇到形形的字符编码,对于各种编码技术本人了解的也不是很多。本篇是我了解编码系列的开篇,主要内容讲述字符编码的基本概念,然后介绍一下常见的字符编码,最后说明一下 Java 中如何编解码?
什么是字符编码?
字符编码也称字集码,是把字符集中的字符编码为指定中某一对象(例如:比特模式、自然数序列、8 位组或者电脉冲),以便文本在计算机中存储和通过通信 络的传递。
编码及编码格式
编码是用预先规定的将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。为保证编码的正确性,编码要规范化、标准化,即需有标准的编码格式。常见的编码格式有 ASCII、ISO-8859-1、GB2312、GBK、GB18030、UTF-8、UTF-16 等。
常见的字符编码ASCII/EASCII
ASCII(American Standard Code for Information Interchange,美国标准信息交换码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,是现今最通用的单字节编码系统。
EASCII(Extended ASCII,延伸美国标准信息交换码)是将 ASCII 码由 7 位扩充为 8 位(增加了 128 个)而成。EASCII 的内码是由 0 到 255 共有 256 个字符组成。EASCII 码比 ASCII 码扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。
ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础 ASCII 码,使用 7 位二进制数(剩下的 1 位二进制为 0)来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。32~126(共 95 个)是字符(32 是空格),其中 48~57 为 0 到 9 十个数字,65~90 为 26 个大写英文字母,97~122 号为 26 个小写英文字母,其余为一些标点符号、运算符号等。
ISO-8859-1
ISO-8859(拉丁码表,欧洲码表)是国际标准化组织(ISO)及国际电工委员会(IEC)联合制定的一系列 8 位字符集的标准。
ISO-8859-1 编码是单字节编码,向下兼容 ASCII,其编码范围是 0x00-0xFF,0x00-0x7F 之间完全和 ASCII 一致,0x80-0x9F 之间是控制字符,0xA0-0xFF 之间是文字符号。
GB2312/GBK/GB18030GB2312
GB2312《信息交换用汉字编码字符集》是由中国标准总局 1980 年发布,GB 是 “国标” 二字的汉语拼音缩写,GB2312 编码适用于汉字处理、汉字通信等系统之间 交换,基本集共收入汉字 6763 个(从 B0-F7 是汉字区)和非汉字图形字符 682 个(其中从 A1-A9 是符号区)。整个字符集分成 94 个区(A1-FE),每区有 94 个位,总的编码范围是 A1-F7。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。
GB2312 简体中文编码表,GB2312 只是编码表,在计算机中通常都是用 “EUC-CN” 表示法,即在每个区位加上 0xA0 来表示。区和位分别占用一个字节。
举例来说,“啊”字是 GB2312 之中的之一个汉字,它的区位码就是 1601。字节编码,通常采用 EUC 储存,以便兼容于 ASCII。每个汉字及符号以两个字节来表示。之一个字节称为 “高位字节”,第二个字节称为“低位字节”。“高位字节” 使用了 0xA1-0xF7(把 01-87 区的区号加上 0xA0),“低位字节”使用了 0xA1-0xFE(把 01-94 加上 0xA0)。例如 “啊” 字在大多数程序中,会以 0xB0A1 储存(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。

GBK
GBK 全称《汉字内码扩展规范》(GBK 即 “国标”、“扩展” 汉语拼音的之一个字母)。GBK 编码,是在 GB2312-80 标准基础上的内码扩展规范,使用了双字节编码方案。
GBK 亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。

GB18030
GB18030 编码采用单字节、双字节、四字节分段编码方案,具体码位见下文。GB18030 向下兼容 GBK 和 GB2312 编码。
GB18030-2005 收录了 70244 个汉字

一图弄懂 ASCII、GB2312、GBK、GB18030 编码
UTF-8/UTF-16Unicode
Unicode(统一码、万国码、单一码),Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode 通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为 0 就可以。
Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的 Unicode 字符分为 17 组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有 65536 个码位,共 1114112 个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32 都是将数字转换到程序数据的编码方案。
最初的 unicode 编码是固定长度的,16 位,也就是 2 两个字节代表一个字符,这样一共可以表示 65536 个字符(即 0 号平面,基本多文种平面)。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0 规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用 2 个 16 位来表示,这样最多可以定义 1048576 个附加字符,目前 unicode4.0 只定义了 45960 个附加字符。
Unicode 编码方案之前提到,Unicode 没有规定字符对应的二进制码如何存储。以汉字 “汉” 为例,它的 Unicode 码点是 0x6c49,对应的二进制数是 110110001001001,二进制数有 15 位,这也就说明了它至少需要 2 个字节来表示。可以想象,在 Unicode 字典中往后的字符可能就需要 3 个字节或者 4 个字节,甚至更多字节来表示了。这就导致了一些问题,计算机怎么知道你这个 2 个字节表示的是一个字符,而不是分别表示两个字符呢?这里我们可能会想到,那就取个更大的,假如 Unicode 中更大的字符用 4 字节就可以表示了,那么我们就将所有的字符都用 4 个字节来表示,不够的就往前面补 0。这样确实可以解决编码问题,但是却造成了空间的极大浪费,如果是一个英文文档,那文件大小就大出了 3 倍,这显然是无法接受的。于是,为了较好的解决 Unicode 的编码问题,UTF-8 和 UTF-16 两种当前比较流行的编码方式诞生了。
UTF-8
UTF-8 是一种针对 Unicode 的可变长度字符编码,是目前互联 上使用最广泛的一种 Unicode 编码方式,它的更大特点就是可变长。它可以使用 1-4 个字节表示一个字符,根据字符的不同变换长度。编码规则如下:
对于单个字节的字符,之一位设为 0,后面的 7 位对应这个字符的 Unicode 码点。因此,对于英文中的 0-127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码那个年代的文档用 UTF-8 编码打开完全没有问题。对于需要使用 N 个字节来表示的字符(N1),之一个字节的前 N 位都设为 1,第 N+1 位设为 0,剩余的 N-1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码点来填充。编码规则如下:
Unicode 十六进制码点范围
UTF-8 二进制
0000 0000 – 0000 007F
0xxxxxxx
0000 0080 – 0000 07FF
110xxxxx 10xxxxxx
0000 0800 – 0000 FFFF
1110xxxx 10xxxxxx 10xxxxxx
0001 0000 – 0010 FFFF
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
下面以汉字 “汉” 为利,具体说明如何进行 UTF-8 编码和解码。
“汉”的 Unicode 码点是 0x6c49(110 1100 0100 1001),通过上面的对照表可以发现,0x0000 6c49 位于第三行的范围,那么得出其格式为 1110xxxx 10xxxxxx 10xxxxxx。接着,从 “汉” 的二进制数最后一位开始,从后向前依次填充对应格式中的 x,多出的 x 用 0 补上。这样,就得到了 “汉” 的 UTF-8 编码为 11100110 10110001 10001001,转换成十六进制就是 0xE6 0xB7 0x89。解码的过程也十分简单:如果一个字节的之一位是 0,则说明这个字节对应一个字符;如果一个字节的之一位 1,那么连续有多少个 1,就表示该字符占用多少个字节。
UTF-16
UTF-16 编码介于 UTF-32 与 UTF-8 之间,同时结合了定长和变长两种编码的特点。它的编码规则很简单:基本平面的字符占用 2 个字节,辅助平面的字符占用 4 个字节。也就是说,UTF-16 的编码长度要么是 2 个字节(U+0000 到 U+FFFF),要么是 4 个字节(U+010000 到 U+10FFFF)。
那么问题来了,当我们遇到两个字节时,到底是把这两个字节当作一个字符还是与后面的两个字节一起当作一个字符呢?这里有一个很巧妙的地方,在基本平面内,从 U+D800 到 U+DFFF 是一个空段,即这些码点不对应任何字符。因此,这个空段可以用来映射辅助平面的字符。辅助平面的字符位共有 2^20 个,因此表示这些字符至少需要 20 个二进制位。UTF-16 将这 20 个二进制位分成两半,前 10 位映射在 U+D800 到 U+DBFF,称为高位(H),后 10 位映射在 U+DC00 到 U+DFFF,称为低位(L)。这意味着,一个辅助平面的字符,被拆成两个基本平面的字符表示。因此,当我们遇到两个字节,发现它的码点在 U+D800 到 U+DBFF 之间,就可以断定,紧跟在后面的两个字节的码点,应该在 U+DC00 到 U+DFFF 之间,这四个字节必须放在一起解读。
接下来,以汉字 “” 为例,说明 UTF-16 编码方式是如何工作的。
汉字 “” 的 Unicode 码点为 0x20BB7,该码点显然超出了基本平面的范围(0x0000-0xFFFF),因此需要使用四个字节表示。首先用 0x20BB7-0x10000 计算出超出的部分,然后将其用 20 个二进制位表示(不足前面补 0),结果为 00010000101110110111。接着,将前 10 位映射到 U+D800 到 U+DBFF 之间,后 10 位映射到 U+DC00 到 U+DFFF 即可。U+D800 对应的二进制数为 1101100000000000,直接填充后面的 10 个二进制位即可,得到 1101100001000010,转成 16 进制数则为 0xD842。同理可得,低位为 0xDFB7。因此得出汉字 “” 的 UTF-16 编码为 0xD8420xDFB7。
Java 中如何编解码?
下面我们以 “I am 君山” 这个字符串为例介绍 Java 中如何把它以 ISO-8859-1、GB2312、GBK、UTF-16、UTF-8 编码格式进行编码的。
123456String name = “I am 君山”byte[] iso8859 = name.getBytes(“ISO-8859-1”);byte[] gb2312 = name.getBytes(“GB2312”);byte[] gbk = name.getBytes(“GBK”);byte[] utf16 = name.getBytes(“UTF-16”);byte[] utf8 = name.getBytes(“UTF-8”);
ISO-8859-1 编码
ISO-8859-1 是单字节编码,中文 “君山” 被转化成值是 3f 的 byte。3f 也就是 “?” 字符,所以经常会出现中文变成 “?” 很可能就是错误的使用了 ISO-8859-1 这个编码导致的。中文字符经过 ISO-8859-1 编码会丢失信息,通常我们称之为“黑洞”,它会把不认识的字符吸收掉。
GB2312 编码
GB2312 字符集有一个 char 到 byte 的码表,不同的字符编码就是查这个码表找到与每个字符的对应的字节,然后拼装成 byte 数组。
GBK 编码UTF-16 编码
用 UTF-16 编码将 char 数组放大了一倍,单字节范围内的字符,在高位补 0 变成两个字节,中文字符也变成两个字节。从 UTF-16 编码规则来看,仅仅将字符的高位和地位进行拆分变成两个字节。
UTF-8 编码
UTF-16 虽然编码效率很高,但是对单字节范围内字符也放大了一倍,这无形也浪费了存储空间,另外 UTF-16 采用顺序编码,不能对单个字符的编码值进行校验,如果中间的一个字符码值损坏,后面的所有码值都将受影响。而 UTF-8 这些问题都不存在,UTF-8 对单字节范围内字符仍然用一个字节表示,对汉字采用三个字节表示。UTF-8 编码与 GBK 和 GB2312 不同,不用查码表,所以在编码效率上 UTF-8 的效率会更好。
小知识点
[1].\uxxxx: 其中 xxxx 表示一个 16 进制数字,这种格式是 unicode 码的写法。[2].0xf: 表示十进制数 15,在 java 中以 0x 开头的数表示十六进制数(如 0x1,0xa)。[3].03: 表示八进制数 3,在 java 中以 0 开头的数表示八进制数(如 012,03)。
参考博文
[1]. GB2312 简体中文编码表[2]. Unicode 编码原理[3]. 彻底弄懂 Unicode 编码[4]. 深入分析 Java 中的中文编码问题
souce:https://morning-pro.github.io/archives/3b38de0f.html
以上就是与2022年码表49码排码图相关内容,是关于gb2312的分享。看完2022 年牛年生肖表后,希望这对大家有所帮助!
宇泽这个名字怎么样 宇泽这个名字怎么样男孩子
宇泽这个名字怎么样 字义解析 名字不仅仅是一个人的标识,它还蕴含着深厚的文化内涵和个人期望。在探讨“宇泽”这个名字时,我们首先要了解它的字义。根据搜索结果,“宇”字的本义为屋檐,后也指房屋、住处、空间,以及形容人...
属兔之人今日财运如何 属兔人今日财运如何、之水墨先生
根据提供的搜索结果, 我们可以从不同角度来分析属兔人今日的财运情况。 星座学角度 从星座学的角度来看, 属兔人的财运可能受到本命年的影响。 一般来说, 属兔人在本命年可能会面临一些财务压力和困难, 需要慎重处理。 不...
结婚是因为什么(结婚是因为什么在一起)
结婚是因为什么:探索婚姻背后的多重意义 结婚,作为人类社会中的一项重要仪式,承载着多重意义和价值。那么,人们选择结婚是因为什么呢?本文将从社会、文化、心理和个人层面出发,探讨结婚背后的原因。 首先,从社会层面来看,结婚...
sm公司姓崔的有哪些 姓崔的爱豆
sm公司姓崔的那些人 SM娱乐公司,作为韩国最大的娱乐公司之一,旗下艺人众多,其中不乏一些姓崔的艺人。本文将介绍SM公司中姓崔的艺人,并探讨他们的成就和影响力。 首先,我们来看看SM公司中最为知名的崔姓艺人——崔秀英。崔...
订阅号怎么起名(王怎么起名) 订阅号名字大全集
根据“订阅号”起名 订阅号是一种在微信平台上向用户推送信息的公共账号类型,其名称是用户识别和记忆的重要标识。因此,为订阅号起一个好的名字至关重要。以下是一些根据“订阅号”起名的建议: 订阅号名称要简洁易记。好...
劳务咨询怎么起名 劳务咨询是什么意思
根据“劳务咨询”起名:打造专业、贴心的品牌形象 在当今社会,劳务咨询已经成为人们生活中...
叶氏怎么起名(叶氏宝宝起名) 2020叶姓宝宝取名大全
根据叶氏起名:传承家族文化与个人特色 叶氏是一个历史悠久的姓氏,在中国文化中有着深厚的...
开店选址技巧全攻略
最常见的有下面几种:1、在坡路上在正常情况下,商店场所地面应与道路路面基本处在一个水平...
八字与风水的联系
1、我们接纳天赋八卦的方位与传统风水连系:南方宜低;北方宜高;东方宜高;西方宜平;东南宜高;西...
从“钟表大王“到”娱乐之王”,传言全港女星都曾经他之手
就连他自己都说过:“世上没有男人不贪财好色,也没有女人不贪慕虚荣,但君子爱财取之有道,淑女...
你住的房子,决定了你的层次
人生千姿百态,难免有层次的区别。人,离不开衣食住行。房子不在乎大小,在乎风水。有好风水的...
2018养生馆装修效果图 养生馆设计及风水禁忌大全
汉 荀悦 《申鉴·政体》:“故在上者,先丰民财以定其志,帝耕籍田,后桑蚕宫,国无游民,野无荒业,财...
怎样和女孩聊天谈恋爱 恋爱的注意事项
怎样和女孩聊天谈恋爱 恋爱的注意事项作者:故梦更新日期:2023-04-30 22:57:17阅读数:56...
一般情侣约会流程 第一次约会要注意什么
一般情侣约会流程 第一次约会要注意什么作者:故梦更新日期:2023-04-25 13:29:20阅读数:...
八字地支排盘 八字命盘排盘
大家好,关于八字地支排盘很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于...
明天摩羯座女生的运势 明天摩羯座女运气
各位老铁们,大家好,今天由我来为大家分享明天摩羯座女生的运势,以及明天摩羯座女生的运势是...
103月28什么星座 十月28是什么星座?是什么星座
大家好,今天来为大家分享103月28什么星座的一些知识点,和阳历十月28号是什么星座的问题解...
梦见自己找算命的算婚姻 梦见自己找算命先生给自己算婚姻
各位老铁们,大家好,今天由我来为大家分享梦见自己找算命的算婚姻,以及梦见自己去算命算姻缘...
袜子放门外结果鞋里多了液体,学校上微机课拖鞋袜 下课发现袜子和鞋里有黏
提起袜子放门外结果鞋里多了液体,大家都知道,有人问学校上微机课拖鞋袜 发现袜子和鞋里有...
2022年1月28日入宅吉利吗(2021年11月28日入宅吉时)
现在有一种普遍的现象发现越来越多的人都会在乡下建房子了,也可以看到乡下的一些小别墅,也...
1967属羊的今年多大岁数,67岁属什么生肖
1967属羊的今年多大岁数 红尘即净土,多情乃佛心。即可在青灯黄卷下,捧一把菩提光阴,静度流...
91年属羊女和什么属相男最配,91年属羊女的贵人肖
91年属羊女和什么属相男最配 婚姻是每个人人生中的一件大事,谁都希望自己能有一份幸福美...
跟属虎犯冲的属相,属虎三合和三冲属相
跟属虎犯冲的属相 属虎犯冲的四个属相 与属虎犯冲的属相有属牛属虎属蛇属猴 1属虎人和属...
属羊的今年有哪些贵人,属狗的今年运势
属羊的今年有哪些贵人 属羊人,天生聪明伶俐,办事果断干练,心地善良,有学识,五官端正,身体健康,...
91年羊何时转运,1991年属羊2022 年运势
91年羊何时转运 属羊人为人志气高昂,机谋出众,一生近贵,奋发有为,六亲荣华近贵,外缘好内缘佳,...
2022年运势八字婚姻,周易八字免费测算
2022年运势八字婚姻老师你好,本人女1992年阳历10月4日晚上23点18分出生,现在结婚有两年了,...
属虎戴玉有什么讲究,属虎人一生佩戴什么好
属虎戴玉有什么讲究 古人讲佩玉为美,黄金有价玉无价。玉埋藏地下几千年或是上亿年,含有大...
属蛇男和什么属相最配对,属蛇男和12生肖女配对
属蛇男和什么属相最配对 男和什么属相最配?属蛇的男性沉着冷静,遇到问题总是会独立思考,同...
属蛇未来5年运势走向55岁,狮子座属蛇55岁的命运
属蛇未来5年运势走向55岁 生肖蛇的人在自己的一个事业中能够将自己的美好的运势都藏在心...
2000年出生今年运势,2000年的龙2022 年怎么样
2000年出生今年运势 对于2000年庚辰年出生的属龙的小朋友在今年会遇到学习上的难关,许多...
龙配对属相婚配表,属龙的属相婚配表
龙配对属相婚配表 之前有写过十二生肖婚配表,很多 友都会评论问一些没有提到的生肖,那么今...
怎么招桃花运最快,测试你近期的桃花运
怎么招桃花运最快 导语:桃花运不好怎么办?有什么旺桃花运的吗?下面就是小编为您提供招桃...
新生宝宝五行缺什么免费查询,算五行缺什么免费测试
新生宝宝五行缺什么免费查询 男为阳,女为阴。命里五行缺什么,根据出生年月日时查看。 具体...
2022年下半年属鸡女爱情,93属鸡女2022 年感情
2022年下半年属鸡女爱情 2022 年上半年马上就要结束了,下半年就要来了,那么下半年桃花运最...
属虎和属兔的相克吗,属兔人和属虎合不合
属虎和属兔的相克吗 说到猪这个动物,中国很早就圈养起来作为家禽肉食,几乎没有听说过在古...
生肖属鼠今日运势如何,属鼠今日运势水墨先生
生肖属鼠今日运势如何属鼠明日运势 (2022 年03月21日) 事业运势: 在工作中今天很有动力,...
属老鼠的种什么植物旺财,生肖鼠都能养什么花
属老鼠的种什么植物旺财 生肖鼠 旺财植物:金钱树 生肖属鼠的人可以在家里摆放一盘金钱树,...
属鼠女命中注定灵魂伴侣,1996属鼠女的一生婚姻
属鼠女命中注定灵魂伴侣 灵魂伴侣想来是人人都羡慕的吧,希望自己可以拥有,人生百年须臾,但...
属相蛇和属相羊婚配可以吗,蛇和羊相配吗
属相蛇和属相羊婚配可以吗 生命都是在疲惫中跋涉,生活都是在矛盾中挣扎。忧伤时,寻一隅静...
女属蛇的更佳婚配,女属蛇的和什么属相最配
女属蛇的更佳婚配 女鸡配什么生肖更好?属鸡的女性在生活当中争强好胜,喜欢表现自己,她们在...
- 数据加载中,请稍后...