`

黑马程序员_计算机编码技术

阅读更多
------- android培训、java培训、期待与您交流! ----------

计算机编码基础知识
一、基础知识
1、为什么要编码
大家都知道,计算机存储数据都是以0、1进行数据的存储,而人类的语言则多种多样,要想让计算机能够理解众多的人类语言,就必须将人类语言“翻译”成计算机能够看懂的语言,这就是为什么要进行编码。编码的目的就是为了让计算机能够理解人类的语言。
2、编码格式和编码表
通俗的讲编码格式就是“翻译”的规则,人类语言与计算机语言的对应规则。由于人类语言众多,编码格式的种类相应的也有多种。编码格式的具体体现就是编码表
3、为什么会出现乱码问题
常见的乱码问题就是因为没有使用正确的编码格式进行信息的转换,导致获得的信息看不懂。解决乱码问题:用什么编码格式编码,就用什么编码格式解码。比如“中国”是用Unicode编码的,那么必须用Unicode解码才不会乱码。也就是说,我们必须首先了解呈现在我们面前的字符是用什么编码格式。
二、常用的编码表
1、ASCII码:美国标准信息交换码
ASCII由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。用一个字节(8位)的低 7 位表示,0-31 是控制字符如换行回车,127删除等;32-126 是打印字符,可以通过键盘输入并且能够显示出来。 例如'A'是65,'a'是97。
比如:
就是说:0100 0001 在ASCII编码规则下表示为A
二进制 十进制 十六进制 图形(字符)
0100 0001 65 41 A
0110 0001 97 61 a
2、ISO-8859-1
128个字符显然是不够用的,于是 ISO 组织在 ASCII编码基础上又制定了一系列标准用来扩展 ASCII 编码,它们是 ISO-8859-1~ISO-8859-15,其中 ISO-8859-1 涵盖了大多数西欧语言字符,所有应用的最广泛。ISO-8859-1 仍然是单字节编码,它总共能表示 256个字符。
3、GB2312
全称是《信息交换用汉字编码字符集基本集》,它是双字节编码(16位,转换为16进制是4个字符),总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682个符号,从 B0-F7 是汉字区,包含 6763个汉字:其中一级汉字3755个,二级汉字3008个。同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。GB2312基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。
比如:
二进制 十进制 十六进制 图形(字符)
1011 1001 1111 1010 47610 B9FA 国
1010 0001 1010 0100 41380 A1A4 .
4、GBK
GBK是汉字编码标准之一,全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification)。GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1 国际标准,是前者向后者过渡过程中的一个承上启下的标准。
5、Unicode
Unicode(Universal Code 统一码)是基于通用字符集(Universal Character Set)的标准来发展, Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。UNICODE支持欧洲、非洲、中东、亚洲(包括统一标准的东亚象形汉字和韩国象形文字)。但是,UNICODE并没有提供对诸如Braille, Cherokee, Ethiopic, Khmer, Mongolian, Hmong, Tai Lu, Tai Mau文字的支持。事实证明,对可以用ASCII表示的字符使用UNICODE并不高效,因为UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,即UTF(Universal Transformation Format)Unicode编码规范中常用的是utf-16和utf-8。
6、UTF-16
UTF-16 用两个字节来表示 Unicode 转化格式,这个是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是 16个bit,所以叫 UTF-16。UTF-16 表示字符非常方便,每两个字节表示一个字符,这个在字符串操作时就大大简化了操作,这也是 Java 以 UTF-16 作为内存的字符存储格式的一个很重要的原因。
UTF-16 统一采用两个字节表示一个字符,虽然在表示上非常简单方便,但是也有其缺点,有很大一部分字符用一个字节就可以表示的现在要两个字节表示,存储空间放大了一倍,在现在的网络带宽还非常有限的今天,这样会增大网络传输的流量,而且也没必要。
6、UTF-8
UTF-8 采用了一种变长技术,每个编码区域有不同的字码长度。UTF-8用1到6个字节编码UNICODE字符。如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节。而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE字符。UTF-8 可以在同一个页面显示中文简体繁体及其它语言(如日文,韩文)。实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNICODE字符转化成UTF-8将需要至少2个字节。
7、ANSI
不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
三、eclipse编码问题
1、工作空间的编码方式
Window->Preferences->General->Workspace->Text file Encoding
2、单个工程的编码方式
右击工程,在弹出的菜单中选择”Properties”
3、修改一类文件的编码方式
Window->General->Content Types
4、修改单个文件的编码方式
右击要修改的文件,在弹出的菜单中选择“Properties”
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics