EASCII及ISO 8859字符编码方案

 

1.

计算机出现之后,从美国发展到欧洲,由于欧洲很多国家中所用到的字符中,除了基本的美国也用的那128个ASCII字符之外,还有很多衍生的拉丁字母等字符,而且是不同的国家用到的衍生字符都不太相同,比如,在法语中,字母上方有注音符号,因此就无法用ASCII码表示。

考虑到一个字节能够表示的编码实际有256个(2^8=256),而ASCII字符只用到了一个字节的低7位,编号为0x00~0x7F(十进制为0~127),也就是占用了前128个(2^7=128),后面128个编码不用白不用,因此很多人打起了后面这128个编码的主意。

2.

可问题在于,很多人同时都有这样的想法,但大家对于0x80~0xFF(十进制为128~255)这后面的128个编码分别对应什么样的字符,却有各自不同的设计。

欧洲先后就设计了两套既兼容ASCII码,又支持欧洲多个国家所使用的那些衍生字符的单字节编码方案:一个是EASCII(Extended ASCII)字符编码方案,一个是ISO/IEC 8859字符编码方案。

其中,EASCII也是将ASCII中闲置的最高位(首位)用来编码新的字符,也就是说,将一个字节中的全部8个比特位用来表示一个字符。比如,法语中的é的编码为130(二进制1000 0010)。

3.

这样一来,这些欧洲国家使用的编码方案,虽然与ASCII编码方案一样使用单字节编码,但却可以表示最多256个字符(2^8 = 256),比ASCII的128个字符(2^7=128)多一倍。

为了保持与ASCII码的兼容性,还规定,当第一个比特位(即字节的最高位)为0时仍表示之前那些常用的ASCII字符(实际的二进制编码为0000 0000 ~ 0111 1111,对应的十进制就是0~127),为1时就表示其他补充扩展字符(实际的二进制编码为1000 0000 ~ 1111 1111,对应的十进制就是128~255)。于是称之为Extended ASCII(扩展ASCII),简称EASCII。

EASCII码比ASCII码扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。

扩展ASCII(EASCII)编码表

4.

不过目前很少使用EASCII,常用的是ISO/IEC 8859字符编码方案。该方案也是在ASCII的基础上,同样利用了ASCII的7位编码所没有用到的最高位(首位),将编码范围从原先ASCII的0x00~0x7F(十进制为0~127)的基础上多扩展出了0x80~0xFF(十进制为128~255),而其中的0xA0~0xFF(十进制为160~255)部分,被ISO/IEC 8859编码所用到。

因此,ISO/IEC 8859字符编码方案同样是单字节编码方案,也同样完全兼容ASCII。

5.

注意,与ASCII属于单个独立的字符集不同,ISO/IEC 8859是一组字符集的总称,其下共包含了15个字符集,即ISO/IEC 8859-n,其中n=1,2,3,...,15,16(其中12未定义,所以共15个)。

这15个字符集,每一个字符集的编码取值都是0xA0~0xFF(十进制为160~255),但是对于同一个编码,不同字符集所对应的字符都不太一样。

其中ISO/IEC 8859-1目前使用较为普遍,有时也简称为ISO 8859-1,而Latin1是其别名(有些环境下也写作Latin-1)。

刨根究底字符编码之四——EASCII及ISO 8859字符编码方案的更多相关文章

  1. 刨根究底字符编码之十——Unicode字符集的字符编码方式CEF

    Unicode字符集的字符编码方式CEF 一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大,有些字符的编号(码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用 ...

  2. python中文utf8编码后是占3个字符,unicode汉字为2字节

    一个中文utf8编码后是占3个字符,所以求长度的函数可以这样写 def str_len(str): try: row_l=len(str) utf8_l=len(str.encode('utf-8') ...

  3. url为什么要编码及php中的中文字符urlencode基本原理

    首先了解以下中文字符在使用urlencode的时候运用的基本原理: urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. 此字符串中除了 -_. 之外的所 ...

  4. JAVA字符编码三:Java应用中的编码问题

    第三篇:JAVA字符编码系列三:Java应用中的编码问题 这部分采用重用机制,引用一篇文章来完整本部分目标. 来源:  Eceel东西在线 问题研究--字符集编码  地址:http://china.e ...

  5. JAVA字符编码二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换

    第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换   1.函数介绍 在Java中,字符串用统一的Unicode编码,每个字符占用两个字节,与编码有 ...

  6. 采用霍夫曼编码(Huffman)画出字符串各字符编码的过程并求出各字符编码 --多媒体技术与应用

    题目:有一个字符串:cabcedeacacdeddaaaba,问题: (1)采用霍夫曼编码画出编码的过程,并写出各字符的编码 (2)根据求得的编码,求得各编码需要的总位数 (3)求出整个字符串总编码长 ...

  7. 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符

    环境: win7 cmd窗口编译 javac xx.java时报错 错误显示:错误:编码GBK的不可映射字符 背景: 分析发现是中文字符所在行报错了 查阅相关资料发现,是因为编译器设置为了utf-8, ...

  8. Delphi的字符(Char),字符串(String),字符串指针(PChar),字符数组arrayofchar(来自http://delphi.cjcsoft.net/论坛)

    Delphi有三种类型的字符: AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉. WideChar这是2字节的Unicode字符. Char在目前相当于AnsiChar,但在De ...

  9. (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter

    字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ...

随机推荐

  1. Codeforces 392C Yet Another Number Sequence (矩阵快速幂+二项式展开)

    题意:已知斐波那契数列fib(i) , 给你n 和 k , 求∑fib(i)*ik (1<=i<=n) 思路:不得不说,这道题很有意思,首先我们根据以往得出的一个经验,当我们遇到 X^k ...

  2. ubuntu 12.04 x86_64:java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons

    sy@sy-Aspire-:~$ .0_155965261/configuration/.log !SESSION -- ::39.595 ------------------------------ ...

  3. 在开源中国(oschina)上创建托管项目

    ***************************************************************** 目标: 1.能上传自己的项目到oschina上并且进行管理 2.能进 ...

  4. ggplot2:分面的介绍

    1.分面 分面是指在一个页面上自动摆放多幅图形的技巧,也就是说可以让不同分类的图同时展示在一张图上,这样方便于数据之间的的比较.ggplot2提供了网格型(facet_grid)和封装型(facet_ ...

  5. ios UIImagePickerController简单说明

    首先,VC中添加#import <MobileCoreServices/MobileCoreServices.h> 使用(NSString *) kUTTypeImage定义在其中 判断是 ...

  6. JSON对象、JSON字符串的相互转换

    JSON对象.JSON字符串的相互转换 json的格式: 第一种方式: 单一的json字符串,转换成json对象时,需要 eval('(' + json + ')');这样的格式,中间需要加括号 va ...

  7. 基于 Haproxy 构建负载均衡集群

    1.HAPROXY简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种负载均衡解决方案.HAProxy特别适用于那些负载特大的web ...

  8. 【转】JDBC学习笔记(4)——PreparedStatement的使用

    转自:http://www.cnblogs.com/ysw-go/ PreparedStatement public interface PreparedStatement extends State ...

  9. [.NET] 《Effective C#》读书笔记(二)- .NET 资源托管

    <Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...

  10. python中str的find()

    今天学习语法的时候发现字符串自带函数find和操作符in功能十分近似,几乎一模一样 if 'a' in name:    print 'Yes, it contains the string &quo ...