字符编码
字符编码
计算机里只有数字,在计算机软件里的一切都是用数字来表示,屏幕上显示的一个个字符也不例外。最初的计算机的使用是在美国,当时所用到的字符也就是现在键盘上的一些符号和少数几个特殊的符号,每一个字符都用一个数字来表示,一个字节所能表示的数字范围内足以容纳所有的这些字符,实际上表示这些字符的数字的字节最高位(bit)都为0,也就是说这些数字都在0到127之间,如字符a对应数字97,字符b对应数字98等,这种字符与数字对应的编码固定下来后,这套编码规则被称为ASCII码(美国标准信息交换码)。
随着计算机在其它国家的逐渐应用和普及,许多国家都把本地的字符集引入了计算机,大大扩展了计算机中字符的范围。一个字节所能表示的数字范围是不能容纳所
第 387 页
有的中文汉字的。中国大陆将每一个中文字符都用两个字节的数字来表示,原有的ASCII码字符的编码保持不变,仍用一个字节表示,为了将一个中文字符与两个ASCII码字符相区别,中文字符的每个字节的最高位(bit)都为1,中国大陆为每一个中文字符都指定了一个对应的数字,并作为标准的编码固定了下来,这套编码规则称为GBK(国标码),后来又在GBK的基础上对更多的中文字符(包括繁体)进行了编码,新的编码系统就是GB2312,而GBK则是GB2312的子集。使用中文的国家和地区很多,同样的一个字符,如“中国”的“中”字,在中国大陆的编码是十六进制的D6D0,而在中国台湾的编码是十六进制的A4A4,台湾地区对中文字符集的编码规则称为BIG5(大五码)。
在一个国家的本地化系统中出现的一个字符,通过电子邮件传送到另外一个国家的本地化系统中,看到的就不是那个原始字符了,而是另外那个国家的一个字符或乱码,因为计算机里面并没有真正的字符,字符都是以数字的形式存在的,通过邮件传送一个字符,实际上传送的是这个字符对应的编码数字,同一个数字在不同的国家和地区代表的很可能是不同的符号,如十六进制的D6D0在中国大陆的本地化系统中显示为“中”这个符号,但在伊拉克的本地化系统就不知对应的是一个什么样的伊拉克字符了,反正人们看到的不是“中”这个符号。随着世界各国的交往越来越密切,全球一体化的趋势越来越明显,人们不可能完全忘记母语,都去使用英文在不同的国家和地区间交换越来越多的电子文档,特别是人们开发的应用软件都希望能走出国门、走向世界,可见,各个国家和地区都使用各自不同的本地化字符编码,已经给生活和工作带来了很多的不方便,严重制约了国家和地区间在计算机使用和技术方面的交流。
为了解决各个国家和地区使用自不同的本地化字符编码带来的不便,人们将全世界所有的符号进行了统一编码,称之为Unicode编码。所有字符不再区分国家和地区,都是人类共有的符号,如“中国”的“中”这个符号,在全世界的任何角落始终对应的都是一个十六进制的数字4e2d,如果所有的计算机系统都使用这种编码方式,在中国大陆的本地化系统中显示的“中”这个符号,发送到伊拉克的本地化系统中,显示的仍然是“中”这个符号,至于那个伊拉克人能不能认识这个符号,就不是计算机所要解决的问题了。Unicode编码的字符都占用两个字节的大小,也就是说全世界所有的字符个数不会超过2的16次方(65536),据推测一定是Unicode编码中没有包
第 388 页
诸如中国的藏文和满文这些少数民族的文字。
相关文章
- LeetCode 340. 至多包含 K 个不同字符的最长子串(滑动窗口)
- java实现字符逆序输出
- 不合法的请求字符,不能包含uxxxx格式的字符
- Java实现 蓝桥杯VIP 算法训练 判断字符位置
- Python爬虫开发:中文字符编码问题quote解决
- 设置mysql的字符编码解决中文乱码问题
- 【STM32H7教程】第52章 STM32H7的LTDC应用之点阵字体和字符编码(重要)
- 无重复字符的最长子串
- 用Java打印中文字符的GBK,UTF8和UTF16编码
- 字节,字符,Unicode及Web编码
- 使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法
- 【LeetCode 3】无重复字符的最长子串
- Java基础,字节字符
- Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略
- java字符串练习题3、字符串中字符是否相同判断
- 练习 1-23 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套。
- C++中三种风格的字符表示法
- 【Android 逆向】Linux 文件分类 ( 普通文件 | 目录文件 | 链接文件 | 字符设备文件 | 管道文件 | 块设备文件 )
- 易飞-凭证打印异常(字符中含有空格,自己主动分行导致显示异常)
- python字符编码
- VC++中ANSI、UNICODE与UTF-8字符编码之间的转换(附源码)
- 【LeetCode】剑指 Offer II 016. 不含重复字符的最长子字符串
- 第十三届蓝桥杯省赛 Java B 组 C题——字符统计(AC)
- java中的UTF-16编码详解,什么是码点?什么是字符?
- 【蓝桥杯每日一练】—字符逆序
- C++字符串操作:分割、合并、转数字、转字符数组
- Go 变量 字符串与字符编码