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编码,可以节省空间~
5. GBK(Chinese Internal Code Specification)汉字内码扩展规范