【转】刨根究底字符编码之四——EASCII及ISO 8859字符编码方案

1.

计算机出现之后,首先逐渐从美国发展到了欧洲。由于欧洲很多国家所用到的字符中,除了基本的、美国也用的那128个ASCII字符之外,还有很多衍生的拉丁字母等字符。比如,在法语中,字母上方有注音符号;而欧洲其他国家也有各自特有的字符。

考虑到一个字节能够表示的编码实际上有256个(2^8 = 256),而ASCII字符却只用到了一个字节中的低7位(因此在ASCII码中最高位总是为0),编号为0x00~0x7F(十进制为0~127)。

也就是说,ASCII只使用了一个字节所能表示的256个编码中的前128个(2^7 = 128)编码,而后128个编码相当于被闲置了。因此,欧洲各国纷纷打起了后面这128个编码的主意。

 

2.

可问题在于,欧洲各国同时都有这样的想法。于是各国针对后面的0x80~0xFF(十进制为128~255)这128个编码分别对应什么样的字符,就有了各自不同的设计。

为了结束欧洲各国这种各自为政的混乱局面,于是又先后设计了两套统一的,既兼容ASCII码,又支持欧洲各国所使用的那些衍生字符的单字节编码方案:一个是EASCII(Extended ASCII)字符编码方案,另一个是ISO/IEC 8859字符编码方案。

(笨笨阿林原创文章,转载请注明出处)

3.

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

显然,EASCII码虽与ASCII码一样使用单字节编码,但却可以表示最多256个字符(2^8 = 256),比ASCII的128个字符(2^7=128)多了一倍。

因此,在EASCII码中,当第一个比特位(即字节的最高位)为0时,仍表示之前那些常用的ASCII字符(实际的二进制编码为0000 0000 ~ 0111 1111,对应的十进制就是0~127),而为1时就表示补充扩展的其他衍生字符(实际的二进制编码为1000 0000 ~ 1111 1111,对应的十进制就是128~255)。

这样就在ASCII码的基础上,既保证了对ASCII码的兼容性,又补充扩展了新的字符,于是就称之为Extended ASCII(扩展ASCII)码,简称EASCII码。

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

4.

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

ISO/IEC 8859字符编码方案所扩展的这128个编码中,实际上只有0xA0~0xFF(十进制为160~255)被实际使用。也就是说,只有0xA0~0xFF(十进制为160~255)这96个编码定义了字符,而0x80~0x9F(十进制为128~159)这32个编码并未定义字符。

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

5.

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

这15个字符集大致上包括了欧洲各国所使用到的字符(甚至还包括一些外来语字符),而且每一个字符集的补充扩展部分(即除了兼容ASCII字符之外的部分)都只实际使用了0xA0~0xFF(十进制为160~255)这96个编码。

其中,ISO/IEC 8859-1收录了西欧常用字符(包括德法两国的字母),目前使用得最为普遍。ISO/IEC 8859-1往往简称为ISO 8859-1,而且还有一个称之为Latin-1(也写作Latin1)的别名。

(注意:图片标题前面的“Codepage 819”表示ISO 8859-1编码的代码页编号为819,有关“代码页”的介绍后文有详细介绍。)

6.

其余从ISO 8859-2到ISO 8859-16各自所收录的字符如下:

  • ISO 8859-2字符集,也称为Latin-2,收录了东欧字符;
  • ISO 8859-3字符集,也称为Latin-3,收录了南欧字符;
  • ISO 8859-4字符集,也称为Latin-4,收录了北欧字符;
  • ISO 8859-5字符集,也称为Cyrillic,收录了斯拉夫语系字符;
  • ISO 8859-6字符集,也称为Arabic,收录了阿拉伯语系字符;
  • ISO 8859-7字符集,也称为Greek,收录了希腊字符;
  • ISO 8859-8字符集,也称为Hebrew,收录了西伯莱(犹太人)字符;
  • ISO 8859-9字符集,也称为Latin-5或Turkish,收录了土耳其字符;
  • ISO 8859-10字符集,也称为Latin-6或Nordic,收录了北欧(主要指斯堪地那维亚半岛)的字符;
  • ISO 8859-11字符集,也称为Thai,几乎与泰国国家标准TIS-620(1990)字符集等同, 唯一的区别是,ISO 8859-11定义了不间断空格NBSP(non-breaking space)字符(码点值为0xA0),而TIS-620中则未定义该字符;
  • ISO 8859-12字符集,目前尚未定义(未定义的原因目前有两种说法:一是原本要设计成一个包含塞尔特语族字符集的“Latin-7”,但后来塞尔特语族变成了ISO 8859-14 / Latin-8;二是原本预留给印度天城体梵文的,但后来却搁置了);
  • ISO 8859-13字符集,也称为Latin-7,主要函盖波罗的海(Baltic)诸国的文字符号,也补充了一些被Latin-6遗漏的拉脱维亚(Latvian)字符;
  • ISO 8859-14字符集,也称为Latin-8,它将Latin-1中的某些符号换成塞尔特语(Celtic)的字符;
  • ISO 8859-15字符集,也称为Latin-9,或者被戏称为Latin-0,它将Latin-1中较少用到的符号删除,换成当初遗漏的法文和芬兰字母,还把英镑和日元之间的金钱符号,换成了欧盟货币符号;
  • ISO 8859-16字符集,也称为Latin-10,涵盖了阿尔巴尼亚语、克罗地亚语、匈牙利语、意大利语、波兰语、罗马尼亚语及斯洛文尼亚语等东南欧国家语言。

 

 

重点记忆: ISO/IEC 8859-1收录了西欧常用字符(包括德法两国的字母),目前使用得最为普遍。ISO/IEC 8859-1往往简称为ISO 8859-1,而且还有一个称之为Latin-1(也写作 Latin1 )的别名。

 

其中,ISO 8859-1 见于默认的 HTML 编码格式!(Eclipse 中)

其中,Latin 1 见于 MySQL 默认的编码格式!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat乱码问题解决

tomcat安装目录下conf文件夹下的logging.properties文件,将java.util.logging.ConsoleHandler.encoding编码为GBK,如图:

【转】HMAC哈希消息认证码及算法原理

HMAC算法原理 HMAC算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在Hash加密算法基础上的。它要求通信双方共享密钥、约定算法、对报文进行Hash运算,形成固定长度的认证码。通信双方通过认证码的校验来确定报文的合法性。 HMAC算法可以用来…

RestFul风格学习

传统的url是这样的 RestFul是这样的

【转】c#快捷键

CTRL SHIFT B生成解决方案 CTRL F7 生成编译 CTRL O 打开文件 CTRL SHIFT O打开项目 CTRL SHIFT C显示类视图窗口 F4 显示属性窗口 SHIFT F4显示项目属性窗口 CTRL SHIFT E显示资源视图 F12 转到定义 CTRL F12转到声明 CTRL ALT J对象浏览 CTRL ALT …

Angular使用Console.log()打印出来的数据没问题,点击详情后数据变了

我在一个界面添加数据使用updataEvent将对象返回给另一个界面后,在onUpData中处理时使用 this.xxxxx d,直接将地址值给了变量,当这个方法结束后d被重置了,所以this.xxx的值也消失了,这里要使用下面的方法复制一个对象出来。 this…

【转】刨根究底CSS(1):开篇

01 一道小菜 CSS很难,这应该是绝大多数Web开发人员的共识。 什么?你并不觉得很难?那我就先上一道小菜,请君品尝。 这是个乍一看,让人觉得很诡异的案例…… 算了,本来想滔滔不绝介绍一番,但一…

angular8 设置延时时间

延时执行this.setHiden()方法 setTimeout(() > {this.setHiden();},300);

【转】刨根究底CSS(2):CSS中的各种值——初始值,就是默认值吗?

先问个非常简单的问题,这个问题的答案,相信大部分Web开发人员都自认为显而易见,但却又多半会答错:CSS属性中的初始值(initial value),就是默认值(default value)吗? 难道不对吗?请往下看。 默…

sqlIte 多条件排序失效问题

写倒叙排序就直接按照mysql那样两个字段后面加一个desc,然后一直没有效果,改为如下: order by starttime desc,endtime desc;每个条件后都加desc就可以了,mysql应该是同样适用的,因为多个不同字段可以按照不同的排序方…

【转】刨根究底正则表达式(1):开篇

奇葩的正则表达式 1、常规学习过程很痛苦 计算机领域中有一些非常基础、重要以及应用广泛,但却又特别容易让人困惑、非常难以理解的主题,这包括了字符编码、字节序(即大小端表示)、浮点数实现、日期时间处理以及正则表达式等。 正则表达式目前市面上并…

正则表达式:匹配非0的整数和小数Double

要求可以是整数、小数,但是不能为0 下面正则0.0之类的也是匹配不中的 (后来测试发现出一个bug,竟然可以匹配到1 1,中间加个空格可以匹配中) ^(([1-9][0-9]*.{1}[0-9])|([0].{1}[1-9][0-9]*)|([1-9][0-9]*)|([0][.][0-9][1-9]))$所以又改了一…

【转】刨根究底正则表达式(2):文本查找方式的演化历史

上一篇文章讲到,从根源上来讲,正则表达式是为了解决文本的查找问题(也称为匹配问题)而诞生的。不过,文本查找方式的历史,要远早于正则表达式。 那么,在正则表达式出现之前,文本查找方式经历了什么演化过程…

正则表达式: input框禁止输入空格:不能只有空格、不能有空格、不能为空的判断

1.只有中间和最后能输入空格(如果让最后不能输入空格则把最后一个*改成),(如果想让开头可以输入空格则把改成*) ^[^\s][\s]*.*$2.不能输入空格 ^[^\s]*$3.如果也不能为空(我是用required来判断的),把*改成 (具体我没测试,感觉可以&#xff…

台式机电脑配置单_2020年电脑配置单重点硬件参考

,电脑的基本配件扫盲我前面写过很多,相信很多小伙伴都看过了,没有看过的可以上我专栏参观:电脑神棍局-组装机专栏​www.zhihu.com配置单在本文后面两篇,但是建议前面花两分钟看下。游戏篇后续还有工作和视频工作站篇主…

【转】刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK等)以及全角、半角、CJK

一、概述 1. 英文字母再加一些其他标点字符之类的也不会超过256个,用一个字节来表示一个字符就足够了(2^8 256)。但其他一些文字不止这么多字符,比如中文中的汉字就多达10多万个,一个字节只能表示256个字符,肯定是不够的&#…

正则表达式:匹配Double类型,整数和小数

正则表达式:匹配Double类型,整数和小数 ^(([0])|([1-9][0-9]*.{1}[0-9])|([0].{1}[1-9][0-9]*)|([1-9][0-9]*)|([0][.][0-9][1-9]))$

开机cpu风扇声音大_联想拯救者R720笔记本,开机显示暗屏,二修机多故障完美修复...

【机器型号】拯救者R720-15(7代I5)【主板版号】NM-B191【故障现象】笔记本不开机接同行送修笔记本拯救者R720-15,7代I5的机器,同行描述说不开机。【维修过程】 拿到机器按下开关没反映,三下五除二,扒下这台电脑的衣服,…

【转】刨根究底字符编码之六——简体汉字编码中区位码、国标码、机内码、外码、字形码的区别及关系

GB2312、GBK、GB18030等GB系列汉字编码方案的具体实现方式是怎样的?区位码是什么?国标码是什么?内码、外码、字形码又是什么意思?它们是如何转换的,又为什么要这样转换? 下面以GB2312为例来加以说明。 一、…

正则表达式:日期格式的校验(日期+时间)

日期格式如下:2020-09-25 00:00:00,并且中间-是可以省略的,那么我们到了后台就需要将时间给转换回来 ^((\d{2}(([02468][048])|([13579][26]))[\-]?((((0[13578])|(1[02]))[\-]?((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))[\-]?(…

公共链接url出错_SEO优化技巧:关于URL的优化方法

点击标题下「蓝色微信名」可快速关注URL优化需要遵循一些原则, 采用以下方法,网页的用户体验更佳,同时对搜索引擎更友好。01URL越短越好对于搜索引擎来说,只要URL不超过265Byte,收录就没有问题。如果使用几百个字母的U…