黑马程序员 — 编码

-------android培训java培训、期待与您交流! ----------



编码


什么是编码:

编码是将源对象内容按照一种标准转换为一种标准格式内容。

解码是和编码对应的,它使用和编码相同的标准将编码内容还原为最初的对象内容。

编解码的目的最初是为了加密信息,经过加密的内容不知道编码标准的人很难识别,已经有数千年历史了。



中文编码主要有以下四种: 


GB2312:

简体中文编码,一个汉字占用2字节,在大陆是主要编码方式。当文章/网页中包含繁体中文、日文、韩文等等时,这些内容可能无法被正确编码。 

BIG5:

繁体中文编码。主要在台湾地区采用。 

GBK:

支持简体及繁体中文,但对他国非拉丁字母语言还是有问题。 

UTF-8:

Unicode编码的一种。Unicode用一些基本的保留字符制定了三套编码方式,它们分别UTF-8,UTF-16和UTF-32。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分。UTF-8俗称“万国码”,可以同屏显示多语种,一个汉字占用3字节。为了做到国际化,网页应尽可能采用UTF-8编码。





ASCII:

ASCII 码总共有 128 个,用一个字节的低 7 位表示,0~31 是控制字符如换行回车删除等;32~126 是打印字符,可以通过键盘输入并且能够显示出来。


作用:表语英语及西欧语言。 

位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。 

范围:ASCII从00到7F,扩展从00到FF。 


ISO-8859-1:

128 个字符显然是不够用的,于是 ISO 组织在 ASCII 码基础上又制定了一些列标准用来扩展 ASCII 编码,它们是 ISO-8859-1~ISO-8859-15,其中 ISO-8859-1 涵盖了大多数西欧语言字符,所有应用的最广泛。ISO-8859-1 仍然是单字节编码,它总共能表示 256 个字符。


作用:扩展ASCII,表示西欧、希腊语等。 

位数:8位, 

范围:从00到FF,兼容ASCII字符集。 


GB2312:

它的全称是《信息交换用汉字编码字符集 基本集》,它是双字节编码,总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682 个符号,从 B0-F7 是汉字区,包含 6763 个汉字。


作用:国家简体中文字符集,兼容ASCII。 

位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。 

范围:高字节从A1到F7, 低字节从A1到FE。将高字节和低字节分别加上0XA0即可得到编码。 


BIG5:

作用:统一繁体字编码。 

位数:使用2个字节表示,表示13053个汉字。 

范围:高字节从A1到F9,低字节从40到7E,A1到FE。 


GBK: 

全称叫《汉字内码扩展规范》,是国家技术监督局为 windows95 所制定的新的汉字内码规范,它的出现是为了扩展 GB2312,加入更多的汉字,它的编码范围是 8140~FEFE(去掉 XX7F)总共有 23940 个码位,它能表示 21003 个汉字,它的编码是和 GB2312 兼容的,也就是说用 GB2312 编码的汉字可以用 GBK 来解码,并且不会有乱码。


作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312。 

位数:使用2个字节表示,可表示21886个字符。 

范围:高字节从81到FE,低字节从40到FE。 


GB18030:

全称是《信息交换用汉字编码字符集》,是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与 GB2312 编码兼容,这个虽然是国家标准,但是实际应用系统中使用的并不广泛。


作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK。 

位数:它采用变字节表示(1 ASCII,2,4字节)。可表示27484个文字。 

范围:1字节从00到7F; 2字节高字节从81到FE,低字节从40到7E和80到FE;4字节第一三字节从81到FE,第二四字节从30到39。 

UTF-16:

说到 UTF 必须要提到 Unicode(Universal Code 统一码),ISO 试图想创建一个全新的超语言字典,世界上所有的语言都可以通过这本字典来相互翻译。可想而知这个字典是多么的复杂,关于 Unicode 的详细规范可以参考相应文档。Unicode 是 Java 和 XML 的基础,下面详细介绍 Unicode 在计算机中的存储形式。


UTF-8:

UTF-16 统一采用两个字节表示一个字符,虽然在表示上非常简单方便,但是也有其缺点,有很大一部分字符用一个字节就可以表示的现在要两个字节表示,存储空间放大了一倍,在现在的网络带宽还非常有限的今天,这样会增大网络传输的流量,而且也没必要。而 UTF-8 采用了一种变长技术,每个编码区域有不同的字码长度。不同类型的字符可以是由 1~6 个字节组成。


UTF-8 有以下编码规则:

  • 如果一个字节,最高位(第 8 位)为 0,表示这是一个 ASCII 字符(00 - 7F)。可见,所有 ASCII 编码已经是 UTF-8 了。
  • 如果一个字节,以 11 开头,连续的 1 的个数暗示这个字符的字节数,例如:110xxxxx 代表它是双字节 UTF-8 字符的首字节。
  • 如果一个字节,以 10 开始,表示它不是首字节,需要向前查找才能得到当前字符的首字节


UCS:

作用:国际标准 ISO 10646 定义了通用字符集 (Universal Character Set)。它是与UNICODE同类的组织,UCS-2和UNICODE兼容。 

位数:它有UCS-2和UCS-4两种格式,分别是2字节和4字节。 

范围:目前,UCS-4只是在UCS-2前面加了0x0000。 


UNICODE: 

作用:为世界650种语言进行统一编码,兼容ISO-8859-1。 

位数:UNICODE字符集有多个编码方式,分别是UTF-8,UTF-16和UTF-32。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值