字符编码

Posted 记性不好,多记记吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符编码相关的知识,希望对你有一定的参考价值。

1. ASCII (American Standard Code for Information Interchange,美国信息互换标准代码) 是基于拉丁字母的一套电脑编码系统, 共定义了128个字符。

编码方式:用一个字节表示 0x00~0x7F  缺点:只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号

二进制 十进制 十六进制 字符 解释
0000 0000 0 00 NULL(null)  
0011 0000 48 30 0 数字0
0100 0001 65 41 A  
0110 0001 97 61 a  
0111 1111 177 7F DEL 删除

2. ANSI编码 不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、Big5、Shift_JIS 等各自的编码标准。这些使用 1 至 4 个字节来代表一个字符的各种延伸编码方式,称为 ANSI 编码

windows操作系统默认是ANSI编码。在简体中文OS中为GBK,在日文OS中为Shift_JIS。不同ANSI间不相互兼容。

一个好玩的例子(百度百科)GBK:新建一个空的文本文件,用记事本打开(必须是Windows自带的记事本),只输入“联通”二字保存关闭(输入“1联通”也是联通显示的也是乱码),再重新打开时将是乱码!

3. Unicode (万国码,统一码,国际码) 是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

编码方式:两个字节表示一个字符

实现方式:Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)

例如:如果一个仅包含基本7位ASCII字符的Unicode文件,如果每个字符都使用2字节的原Unicode编码传输,其第一字节的8位始终为0。可以使用UTF-8编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。

4. UTF-8 (8-bit Unicode Transformation Format) 是一种针对Unicode的可变长度字符编码

它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

字符 ASCII Unicode UTF-8
A 0100 0001 0000 0000 0100 0001 0100 0001
- 0100 1110 0010 1101 1110 0100 1011 1000 1010 1101

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码,可以节省空间~

以上是关于字符编码的主要内容,如果未能解决你的问题,请参考以下文章

如何查看字符编码类型

Python 字符集编码 - UTF-8 编码

unicode字符集是多少位的字符编码

刨根究底字符编码之九——字符编码方案的演变与字节序

公众号回复表情 和 关于字符集和字符编码

编码方式的编码方式