美文网首页
字符 & 字符集 & 字符编码

字符 & 字符集 & 字符编码

作者: 张崩崩得了懒癌 | 来源:发表于2017-09-09 22:58 被阅读32次

字符(Char):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是一个字符,一个阿拉伯数字是一个字符,一个标点符号也是一个字符。

字符集(Charset):是一个系统所支持的所有的抽象字符的集合。其中字符为各种文字和符号的总称。

字符编码(Character Encoding):是一套法则,使用该法则,可以使自然语言中的一套字符集合 与 其他东西的一个集合进行配对。即在符号结合和数字系统之间建立一套关系。通俗地讲,字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

常用的字符集:

常见的有:ASCII字符集,GB2312字符集,BIG5字符集,Unicode字符集

ASCII字符集和编码:

ASCII是基于拉丁字母的一套编码,主要用于现代英语,勉强支持西欧语言。

ASCII字符集:包含了控制字符(换行,退格键,回车键),可显示字符等。

ASCII编码:将ASCII字符集转换为计算机可以识别的编码规则。使用7位(bits)表示一个字符,可以支持128个字符。使用8位(bits)表示一个字符,共支持256个字符

ASCII编码最大的缺点:只能显示26个基本的英文字符,阿拉伯数字,英式标点符号等共256个字符。

GBXXXX字符集和编码:

天朝有了计算机后,必须引入一套规则,用于将汉子转换为计算机可以接受的数字系统的数。

天朝专家把127号以后的字符都取消掉,并且规定:小于127的字符的意义与原来相同,大于127的字符,每两个连在一起表示一个汉字,前面一个字节成为高字节,后面一个字节成为低字节,这样大约组合出来7000个左右的汉字,在这些编码里,连ASCII里本来就有的数字,标点符号统统重写编写了一遍,这就是常说的“全角”“半角”字符,127以前的称谓半角字符。

特点:采用了多字节编码,每个字可以由1,2个或者4个字节组成

BIG5字符集和编码:

BIG5字符集主要用来表示“繁体中文”,称为大5码。它是一套双字节字符集,使用了双八码存储方法,使用两个字节来安放一个字,第一个字节称为“高位字节”,第二个字节称为低位字节。

伟大的创想-Unicode:

为了解决世界上各种语言的问题,防止互相访问出现乱码的情况,产生了Unicode。

Unicode是基于通用字符集发展的,被称为统一码,万国码。

Unicode 与 UTF-8 UTF-16 UTF-32:

简述:Unicode是字符集,UTF-8/16/32 是三种字符编码方案:

UTF-32:

使用4个字节(32位)的数字来表达每个字母,数字。每个数字使用4个字节来表示,就空间效率而言,是非常没有效率的。

这种方法也有优点,因为其每个字母/数字使用4个字节数字来表示的,所以一个字符串中的第N个字符是从4*N个字节开始的,即每一个字符的长度都是固定的。

UTF-16:

尽管unicode表示的字符非常多,但是通常使用不会超过前65535个字符,所以,UTF-16使用2个字节(16位)的数字来表示系统中的每个字母,数字,符号等。它最明显的优点就是空间效率上是utf-32的两倍。

UTF-8:

UTF-8是基于Unicode的一种可变长度的字符编码,它可以表示Unicode中的任何一个字符,且编码的第一个字节与ASCII完全兼容。

UTF-8使用一到四个字节来表示一个字符。

(1) 128个ASCII字符,只需要1个字节编码

(2) 带有附加符号的拉丁文,阿拉伯文等需要2个字节编码

(3) 其他基本多文种平面,通常使用3个字节编码

(4) 极少多食用4个字节编码

优点:

UTF-8不存在字节顺序的问题(UTF-16存在),一份以utf-8编码的文件,在不同的计算机之间,是一份相同的bit流。

UTF-8是ASCII的超集,因为一个纯ASCII编码的字符,也是一个合法的UTF-8编码字符。

缺点:

因为每个字符使用不同数量的字节编码,所以一个字符串中想要定位一个字符的位置,就会很复杂。

Unicode 转 UTF-8的规则:

比如“汉”字,其Unicode编码是6C49,6C49在 0800-FFFF之间,所以才用第三套模版转换。

6C49转换成二进制是0110 1100 0100 1001 ,把这个比特流转换成第三套模版就是 0110 110001 001001

然后填充到1110xxxx 10xxxxxx 10xxxxxx中x的位置上

即为11100110 10110001 10001001  即E6 B1 89 这就是UTF8编码

一个有趣的问题,当你在windows电脑桌面建立一个文本文件,输入“联通”两个字后,重新打开,会出现乱码。

答:

文本文件的默认编码是ANSI,属于GBxx系列,每个汉字采用2个字节编码。所以“联通”对应的编码为:

可以看到第一个字符的 高位字节前三位是110  低位字节前2位是10

第二个字符的 高位字节前三位110,低位字节前2位是10

这一下就跟UTF-8编码的第二套规则相符合,系统就会认为这是utf8编码,然后在解码的时候就采用了错误的方式,导致了乱码。

相关文章

  • 字符 & 字符集 & 字符编码

    字符(Char):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是一个字符,一个阿拉伯数字是一...

  • 字符集&字符编码

    字符集和字符编码 计算机中存储的信息都是用二进制数表示的(即0和1,逢二进一,这和计算机逻辑电路中的接通和断开两个...

  • 在实体引用中,实体名称必须紧跟在'&'后面

    ’&’是非法字符,用 & 替代

  • 关于JavaScript编码你应该知道的

    1. 字符集和编码的关系 字符集是字符的集合,编码则是字符集中的字符要如何存储的规则。 如上图,当字符集和编码一一...

  • Java内存中的文本编码

    1、编码简介 1.1 概念简析:字符、字符集、编码字符集、Code Point、Code Unit和字符编码格式 ...

  • 字符集和字符编码

    一篇很好地字符集和字符编码的详细介绍 字符集和字符编码(Charset & Encoding)

  • imsdk 数据库设计

    字符编码,字符集 后面 字符编码,字符集统一 CHARACTER SET utf8mb4 COLLATE utf...

  • 字符集、字符编码

    字符集 字符集 = 字库表 + 编码字符集 + 字符编码。 字库表:相当于所有可读或可显示字符的数据库、字库表决定...

  • 字符集与字符编码

    1.字符集字符集是字符的集合,是一系列字符与二进制序列的映射关系,例如ASCII字符集。2.字符编码字符编码是字符...

  • 字符与编码(五)

    (九)Unicode字符集的字符编码方式 一、字符编码方式CEF的选择 由于Unicode字符集非常大,有些字符的...

网友评论

      本文标题:字符 & 字符集 & 字符编码

      本文链接:https://www.haomeiwen.com/subject/gsoajxtx.html