从字符集发展史看Unicode和UTF-8的区别

版权声明

本文并非本人原创,其内容来源于网络,本文根据其演绎而来,具体出出已经无法考证,在这里只好给出我所参考的连接。

ASCII编码

我们都知道计算机来源于美国,并且计算机它比较笨,只知道 01 也就是电路的通和断(0或1即是一个二进制位)。那么美国人怎么使用计算机来存储他们的信息呢? 他们想了一个办法。将8个二进制位视为一组--也就是一字节(8bit=1byte). 1byte能够标表示 256 个数字数据范围是 0-255。 就这样每一个数字就人为地赋予一个意思,比如 10 就代表换行,41 就代表大写字母 A。而0-31 都是一些特殊的字符,这些字符在古老的时候用来控制终端(比如说打印机)的行为。而从32 - 127 就代表一些实意的字符。0 到 127 就正好能够将所有的英文的字符都囊括进来,所以美国人就可以很开心的使用计算机了。

计算机的不断发展

在后来,越来越多的国家都开始使用计算机了,但是有些国家可能有自己的语言并不是英语,那么现在现有的ASCII编码已经不适用了。那么怎么办呢? 现有的ASCII编码还有将所有的位置都占满,所以非英语的国家都开始扩张ASCII编码的编码集,陆陆续续的将 127 之后的字符都渐渐地用上了。这时候计算机仍然在迅速地在全球蔓延。

迟到的中国

在中国引入了计算机时,ASCII编码0-255都已经被先来的国家给占据了,已经没有给中文留位置了。怎么办呢? 那咱中国就搞自己的字符集。在一些大佬们的努力下想出了一个解决方案--扩展ASCII编码。废除了127之后的所有的后来添加的字符,保留原有的英文字符。并且扩展了原有的ASCII的编码规则,原来的ASCII编码规则是 1byte代表一个字符,但是这已经不适用咱们国家了,所以又加了一个byte,两个byte代表一个中文字符。那么如何判断二进制是一个中文字符还是一个英文字符呢?

新的编码规则是这样规定的(两个>127的byte标识一个汉字),如果一个byte>127 那么就表明,这是一个中文字符的第一个字节(被称为高位字节),那么一个高位字节和一个高位字节就代表一个中文字符;而如果一个byte的值<=127那么这一个byte就代表一个英文字符。

就这样我们的新的字符集已经形成了,它被称为 GB2313 ,其扩展了ASCII编码集,实现了汉字的存储,GB2312一个可以存储6000多个常用的中文字符了甚至还存储了一些数学符号和日本的片假字还有英文符号的具有高位字节的标识形式--也就是 全角字符 而原来的英文符号被称为 半角字符

这也就是为什么我们常说: 一个汉字占两个字节,一个英文占一个字节。

GB2312不够用了

GB2313编码解决了中文字符输入的问题,但是只有6000多个常用字,那么就导致很多生僻字是没有在字符集里面的,

从字符集发展史看Unicode和UTF-8的区别的更多相关文章

  1. Unicode和UTF的关系

    目录结构: contents structure [+] 什么是USC UCS的编码方式 Unicode的来源 为什么需要Unicode Unicode的方式 Unicode和UTF UTF和Unic ...

  2. Unicode、UTF-8 和 ISO8859-1

    Unicode.UTF-8 和 ISO8859-1到底有什么区别 1.本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文" ...

  3. 字符集转换: Ansi - Unicode

    字符集转换: Ansi - Unicode wstring AnsiToUnicode (const string& strSrc ) { /*!< 分配目标空间 */ ,strSrc. ...

  4. unicode,ansi,utf-8,unicode big endian编码的区别

    知乎--http://www.zhihu.com/question/23374078 http://wenku.baidu.com/view/cb9fe505cc17552707220865.html ...

  5. ASCII,Unicode,UTF-8,GBK 区别

    编码历史与区别 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又 ...

  6. ascii、unicode、utf、gb等编码详解

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这 ...

  7. 多字符集(ANSI)和UNICODE及字符串处理方式准则

    在我们编写程序的时候,使用最多的是字符串的处理,而ANSI和UNICODE的相互转换经常搞的我们头晕眼乱. 应该说UNICODE是一种比较好的编码方式,在我们的程序中应该尽量使用UNICODE编码方式 ...

  8. Unicode、UTF-8 和 ISO8859-1到底有什么区别

    说明:本文转载于新浪博客,旨在方便知识总结.原文地址:http://blog.sina.com.cn/s/blog_673c81990100t1lc.html 本文主要包括以下几个方面:编码基本知识, ...

  9. 简单的看Unicode和UTF-8的区别

    作者:uuspider链接:http://www.zhihu.com/question/23374078/answer/65352538来源:知乎著作权归作者所有,转载请联系作者获得授权. 举一个例子 ...

随机推荐

  1. maven私服内容补充

    1.添加阿里云中央仓库 注意Download Remote Indexes选项为True 1.登陆nexus私服(默认账号密码:admin/admin123) 2.点击右侧Repositories 3 ...

  2. Java InputStream 、 InputStreamReader和BufferedReader

    https://blog.csdn.net/zgljl2012/article/details/47267609 在Java中,上述三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法 ...

  3. 实验一 Java开发环境的熟悉--20165221

    实验报告封面 课程:Java程序设计 班级:1652班 姓名:谭笑 学号:20165221 成绩: 指导教师:娄嘉鹏 试验日期:2018.4.2 实验组次:21 预习程度:已预习 实验时间:15:35 ...

  4. centOS6.4 extundelete工具恢复rm -rf 删除的目录[转]

    原文:http://www.cnblogs.com/patf/p/3368765.html PS:补充下,我在fedora 19上运行的时候遇到的一个问题: 1 [root@localhost ext ...

  5. 六、regularized logisitic regssion练习(转载)

    转载链接:http://www.cnblogs.com/tornadomeet/archive/2013/03/17/2964858.html 在上一讲Deep learning:五(regulari ...

  6. 写好shell脚本的13个技巧【转】

    有多少次,你运行./script.sh,然后输出一些东西,但却不知道它刚刚都做了些什么.这是一种很糟糕的脚本用户体验.我将在这篇文章中介绍如何写出具有良好开发者体验的 shell 脚本. 产品的最终用 ...

  7. 『转载』hadoop2.x常用端口、定义方法及默认端口

    『转载』hadoop2.x常用端口.定义方法及默认端口 1.问题导读 DataNode的http服务的端口.ipc服务的端口分别是哪个? NameNode的http服务的端口.ipc服务的端口分别是哪 ...

  8. iOS 8 WKWebView 知识点

    首先看看这篇文章,写得很好:http://nshipster.cn/wkwebkit/ 再推荐去看看 iOS_8_by_Tutorials 这本书里的 WKWebView相关章节! 我这里说下自己的简 ...

  9. HTML标签播放MP4视频

    1.使用 <object> 标签播放视频 <object width="500" height="300" data="http:/ ...

  10. python + selenium 模块封装及参数化

    模块封装 示例代码: baidu.py from time import sleep from selenium import webdriver driver = webdriver.Chrome( ...