刨根究底字符编码之四——EASCII及ISO 8859字符编码方案
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码扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。

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字符编码方案的更多相关文章
- 刨根究底字符编码之十——Unicode字符集的字符编码方式CEF
Unicode字符集的字符编码方式CEF 一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大,有些字符的编号(码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用 ...
- python中文utf8编码后是占3个字符,unicode汉字为2字节
一个中文utf8编码后是占3个字符,所以求长度的函数可以这样写 def str_len(str): try: row_l=len(str) utf8_l=len(str.encode('utf-8') ...
- url为什么要编码及php中的中文字符urlencode基本原理
首先了解以下中文字符在使用urlencode的时候运用的基本原理: urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. 此字符串中除了 -_. 之外的所 ...
- JAVA字符编码三:Java应用中的编码问题
第三篇:JAVA字符编码系列三:Java应用中的编码问题 这部分采用重用机制,引用一篇文章来完整本部分目标. 来源: Eceel东西在线 问题研究--字符集编码 地址:http://china.e ...
- JAVA字符编码二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换 1.函数介绍 在Java中,字符串用统一的Unicode编码,每个字符占用两个字节,与编码有 ...
- 采用霍夫曼编码(Huffman)画出字符串各字符编码的过程并求出各字符编码 --多媒体技术与应用
题目:有一个字符串:cabcedeacacdeddaaaba,问题: (1)采用霍夫曼编码画出编码的过程,并写出各字符的编码 (2)根据求得的编码,求得各编码需要的总位数 (3)求出整个字符串总编码长 ...
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
环境: win7 cmd窗口编译 javac xx.java时报错 错误显示:错误:编码GBK的不可映射字符 背景: 分析发现是中文字符所在行报错了 查阅相关资料发现,是因为编译器设置为了utf-8, ...
- Delphi的字符(Char),字符串(String),字符串指针(PChar),字符数组arrayofchar(来自http://delphi.cjcsoft.net/论坛)
Delphi有三种类型的字符: AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉. WideChar这是2字节的Unicode字符. Char在目前相当于AnsiChar,但在De ...
- (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter
字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ...
随机推荐
- backtracking问题
backtracking最基础的问题是Subsets,即给定一个数组,要求返回其所有子集. Given a set of distinct integers, nums, return all pos ...
- 转接口IC ADV7280/ADV7280-M:CVBS转MIPI转接口芯片 10位、4倍过采样标清电视视频解码器,支持去隔行
概述ADV7280/ADV7280-M是功能丰富的单芯片.多格式视频解码器.ADV7280/ADV7280-M可自动检测标准模拟基带视频信号,兼容复合.S视频和分量视频形式的NTSC.PAL和SECA ...
- 移动开发中使用的一些meta头部标签整理
<!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> <html lang="zh-cmn-Hans"&g ...
- 2017华为机试题--Floyd算法
小K是X区域的销售经理,他平常常驻"5"城市,并且经常要到"1"."2"."3"."4"." ...
- 4 安装MPush
cnblogs-DOC 1.服务器环境 2.安装Redis3.安装Zookeeper4.安装MPush5.安装Alloc服务6.完整测试7.常见问题 一.Linux安装Mpush [root@loca ...
- sql中的for xml path() 实现字符串拼接
通常我们需要在sql中拼接字符串 ,可以用for xml path() 来进行拼接,如下实例. 同时未去掉最后一个逗号可以用LEFT函数来实现. ) AS UserName FRO ...
- 500. Keyboard Row
Given a List of words, return the words that can be typed using letters of alphabet on only one row' ...
- Android -- 贝塞尔实现水波纹动画(划重点!!)
1,昨天看到了一个挺好的ui效果,是使用贝塞尔曲线实现的,就和大家来分享分享,还有,在写博客的时候我经常会把自己在做某种效果时的一些问题给写出来,而不是像很多文章直接就给出了解决方法,这里给大家解释一 ...
- python3.x元组打印错误 TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
原创by南山南北秋悲 欢迎引用!请注明原地址:http://www.cnblogs.com/hwd9654/p/5676746.html 谢谢! TypeError: unsupported ope ...
- Java中Properties类
1 简介: JDK提供的java.util.Properties类继承自Hashtable类并且实现了Map接口,用map来存储key-value数据,所以存入的数据是无序的.其中键和值都是字符串类型 ...