简介

编码是将一种字符表示格式转换为另一种格式的过程。

这篇文章所讲的计算机编码是将人类能看懂的文字转换为计算机可以处理的二进制'0''1'串的格式的过程。解码是编码的逆过程,就是将’0‘’1‘串转换为自然文字的过程。

ASCII

我们知道,计算机不像人能够看懂不同的文字,他只能处理’0‘’1‘这两种状态,这两种状态在计算机底层代表了高低电平。所以要使用计算机首先得把我们的文字转换为二进制串,不同的文字转换为不同的二进制串。最初计算机科学家们设计了ASCII表,它的全称是“美国信息交换标准编码”,最初计算机的发展是从美国开始的,他们也只设计了针对他们语言的编码表。下面这张图是对应的转换表:

基础的ASCII使用8位二进制来表示128个不同的字符,只使用了后7位,最高位为0。0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;

32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。

65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

ASCII是最初使用的编码表,也是现在绝大部分计算机都会内置的编码表。当我们按下键盘上某个键时,键盘中的电路会根据按下的某个键将其转换为ASCII表中的二进制串传给电脑。

GB_2312 中文编码

ASCII只需要7位就可以将英文表示出来,因为英文字母只有26个,即使大小写也才52个,加上数字、标点、控制字符等,使用128个字符编码就够了。而中文不一样,汉字编码GB_2312收录了6000多个汉字,一个字节8位最多表示256个文字,远远不够,所以GB_2312使用了2个字节来表示汉字,2个字节最多可以表示2^16=65536个文字,所以表示汉字足够了。

Unicode 统一码

全世界包括很多种语言文字,如果我们在电脑上看某一国文字,没有相应的编码是看不了的,无法解码,如果某国语言文字的文章中也包含了其他国家的语言文字或者包括含了英文,那如果不知道他们编码有区别的话也不知道何时去解码何种文字。为了解决这种问题,Unicode出现了。

Unicode只有一个字符集,这一个字符集包括了所有的各国的文字。中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符码一般用十六进制来 表示。编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode 编码是0x0061,十进制是97,而"a"的ASCII编码是0x61。Unicode扩展自ASCII,ASCII表示了128个字符,所以Unicode前0-127表示了ASCII的字符。

在Unicode中:汉字“字”对应的数字是23383(十进制),十六进制表示为5B57。在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8、UTF-16、UTF-32。UTF是“Unicode Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。所以Unicode定义了表示各种文字的数字编码,实际实现时占用几个字节,怎么实现出来还得根据采用的UTF来进行转换。

UTF-8

UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式如下:

Unicode编码(十六进制)UTF-8 字节流(二进制)
000000-00007F0xxxxxxx
000080-0007FF110xxxxx 10xxxxxx
000800-00FFFF1110xxxx 10xxxxxx 10xxxxxx
010000-10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx

UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是6个字节。从上表可以看出,6字节模板有31个x,即可以容纳31位二进制数字。Unicode的最大码位0x7FFFFFFF也只有31位。

例1:“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。

总结

在使用电脑的时候如果出现了乱码问题,应该就是采用的编码格式不一致造成的,确定原始文档采用的编码格式,再选择相应的编码进行解码打开就会解决这种问题。编程时,如果数据库存储时出现了乱码或者读取文件时出现了乱码,那也应该确定原始文本编码格式和数据库表编码格式或者代码中指定的编解码是否一致,从而解决这种问题。

1.《关于文字怎么转二进制,你需要知道这些计算机编码》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《关于文字怎么转二进制,你需要知道这些计算机编码》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2976255.html