今天在看一些面试题目的时候突然看到关于字符编码的问题,想到自己也会经常遇到这个问题,每次都是去网上直接搜索答案,并不明白其中的原理,这次就彻底的花了一下午的时间去了解关于字符编码的问题,看完之后觉得收获颇多,这篇文章就来简单讲解下我的学习过程,希望能帮助到大家。
一、ASCII
ASCII(American Standard Code Information Interchange,美国信息交换标准代码),是基于拉丁字母的一套计算机编码系统,它主要用于显示现代英语。(解释来源于wiki)
ASCII是一种单字节编码的编码系统,迄今为止它定义了128个字符,我们知道单字节总共有八位(ox00-oxFF),但128个字符只会用到七位,我们就规定最前面一位为0,下图中截取了部分ASCII编码的映射关系
部分可显字符
缺点:ASCII编码只能表示128个字符,那对于一些其他国家的语言,比如法语字母上方是有标注的,于是一些欧洲国家就决定使用空闲下来的最高位编码纳入新的符号,比图法语中à的编码为129,这样一来这些欧洲国家使用的ASCII就可以表示256个字符,这样就衍生出了EASCII(Extended ASCII,延伸美国标准信息交换码),EASCII码比ASCII码扩充出来的符号包括表格符号、计算符号、希腊字母和特殊的拉丁符号。
但是这样又出现了新的问题,不同的国家用的语言可能不同。因此256个字符来编码肯定是不够的,至于亚洲国家来说更是如此,光汉字就有1