“浅入深处“编码历史,字符串编码(ASCII, GBK, ANSI, Unicode, UTF-8编码),为什么记事本默认ANSI编码,Unicode和UTF8有什么区别

简介: “浅入深处“编码历史,字符串编码(ASCII, GBK, ANSI, Unicode, UTF-8编码),为什么记事本默认ANSI编码,Unicode和UTF8有什么区别

迅速了解编码的发展历程:

ASCII => GB2312 => GBK=>gb18030 => ISO-8859-1(Unicode)(latin-1) => UTF-8(Unicode)


从ASCII码谈起

ASCII码:16384个字符。这就是ANSI字符标准。英文一个字节,中文两个字节。


早期计算机(美国人造的),用ASCII编码(一个字节,8位,可以表示256个编码,实际英语世界里字母、数字和常用符号完全够用)


但是随着计算机的发展,需要更加人性化的编码来适应世界,于是编码的迭代开始了


中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。


汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时进行了大量扩充


GBK 是又一个汉字编码标准,全称《汉字内码扩展规范》(GBK),英文名称 Chinese Internal Code Specification


中国的中文编码表升级,融合了更多的中文文字符号。


中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充GB18030 编码。


每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。


最后有个叫 ISO 的组织,他们一起创造了一种编码 Unicode(中英文都占取两个字节),这种编码可以容纳世界上任何一个文字和标志。所以只要电脑上有Unicode这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成Unicode编码就可以被其它电脑正常解释。


Unicode 在网络传输中,出现了两个标准 UTF-8 (中文三个字节,英文一个字节)和 UTF-16,分别每次传输 8个位和 16个位。


UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式, UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。


你可能有迷惑:

为什么Unicode使用那么广泛,更适应全世界使用,我们的记事本还是用的是ASCII码呢?


ANSI:并不是某一种特定的字符编码。在不同的系统中,ANSI 表示不同的编码,美国的系统中ANSI编码其实是ASCII编码,ASCII 编码不能表示汉字,所以汉字我们可以看到汉字为乱码,而你的系统中 汉字 之所以能够正常显示,ANSI编码其实是GBK编码;而韩文系统中(“한국어”正常显示)ANSI编码其实是EUC-KR编码)


windows 系统通过 Windows code pages 的值来确定当前系统的编码方式(ANSI 只存在于 Windows 系统,不同地区发行的系统,ANSI指代不同)


(根据装的系统编码来决定的)


Unicode:


使用两个字节对世界上几乎所有的语言进行编码


(0x0000-0xFFFF)


Unicode是针对所有计算机的使用者定义一套统一的编码规范,这样计算机使用者就避免了编码转换的问题。


UTF-8(Unicode transfer format -8 ,后面的8代表是以8位二进制为单位来传输符号的)


它 是 Unicode 一种压缩形式,英文 A 在 Unicode 中表示为 0x0041,老外觉得这种存储方式太浪费,因为浪费了 50% 的空间,于是就把英文压缩成 1 个字节,成了 utf8 编码,但是汉字在 utf8 中占 3 个字节,显然用作中文不如 ansi 合算,这就是中国有时候用ansi而不用 UTF8 的原因。


相关文章
|
1月前
|
存储 自然语言处理 C++
Unicode编码
Unicode编码
25 4
|
4月前
|
存储 JavaScript Java
[字符编码] 理论篇:常见字符集与编码方式
[字符编码] 理论篇:常见字符集与编码方式
69 0
|
7月前
|
存储 网络协议 安全
字符编码技术专题(一):快速理解ASCII、Unicode、GBK和UTF-8
今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的总结,主要用来整理自己的思路。我尽量写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的*石,对于程序员来说尤其重要,字符编码的知识是必须要懂的。
36 0
|
9月前
|
存储 Java 关系型数据库
【精炼易懂】字符集、编码、乱码问题、ASCII、GBK、Unicode、UTF-8详解+实例说明
【精炼易懂】字符集、编码、乱码问题、ASCII、GBK、Unicode、UTF-8详解+实例说明
4989 4
|
9月前
|
存储 Windows
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解(二)
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解
192 1
|
9月前
|
Java Linux 开发工具
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解(一)
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解
298 1
|
iOS开发
Unicode 与 UTF-8 编码的转换
Unicode 与 UTF-8 编码的转换
Unicode 与 UTF-8 编码的转换
|
存储 Java 关系型数据库
【技术干货】理解Unicode字符编码
本文对字符编码Unicode以及UTF8和UTF16的编码原理进行了详细说明
534 1
|
存储 算法 Java
【字符编码】字符编码 && Base64编码算法
  在前面的解决乱码的一文中,只找到了解决办法,但是没有为什么,说白了,就是对编码还是不是太熟悉,编码问题是一个很简单的问题,计算机从业人员应该也必须弄清楚,基于编码的应用有Base64加密算法,然后,这个问题一直放着,想找个机会解决。于是乎,终于逮到机会,开始下手。
176 0
【字符编码】字符编码 && Base64编码算法
|
Web App开发 存储 Windows
字符编码知识:Unicode、UTF-8、ASCII、GB2312等编码之间是如何转换的?
转自:  http://apps.hi.baidu.com/share/detail/17798660 字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得字符编码的知识。不注意的人可能对这个不在意,但这些名词有时候实在让人迷惑,对想学习计算机知识的人来说,搞懂它也十分重要,我也是在学习中慢慢了解了一些这方面的知识。
1774 0

热门文章

最新文章