从字符集发展史看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. JDK7与8内存参数解析与修改

    JDK内存 jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配. 运行时数据区通常包括这几个部分:程序计数器(Program Counter Register).Jav ...

  2. Dubbo监控中心

    (1).dubbo-admin(管理控制台) 1).从https://github.com/apache/incubator-dubbo-ops下载解压 2).修改dubbo-admin配置文件中zo ...

  3. UML和模式应用4:初始阶段(2)--需求科目之进化式需求

    1. 前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: UP每个阶段包括 业务建模.需求.设计等科目: 需求是UP科目之一,在初始阶段需求科目的工作量占据较大的部分.但是初始阶段的 ...

  4. python的技巧和方法你了解多少?

    学了这些你的python代码将会改善与你的技巧将会提高. 1. 路径操作 比起os模块的path方法,python3标准库的pathlib模块的Path处理起路径更加的容易. 获取当前文件路径 前提导 ...

  5. CSS导航条nav简单样式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. php ajax返回无故刷新页面

    1 前言 一个php页面,里面两个$.POST请求,一个会刷新页面,一个不会,然后就拉出来研究一下了,仅作为记录使用. 2 代码 HTML代码: <input value="查找&qu ...

  7. Go语言规格说明书 之 select语句(Select statements)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  8. mac安装RabbitMQ

    1 下载 地址 http://www.rabbitmq.com/install-standalone-mac.html 2 rabbitmq的安装目录: /Users/ysyc1/rabbitmq_s ...

  9. 前端开发必须知道的JS之闭包及应用

    本文讲的是函数闭包,不涉及对象闭包(如用with实现).如果你觉得我说的有偏差,欢迎拍砖,欢迎指教. 在前端开发必须知道的JS之原型和继承一文中说过下面写篇闭包,加之最近越来越发现需要加强我的闭包应用 ...

  10. 来自工程师的8项Web性能提升建议

    在互联网盛行的今天,越来越多的在线用户希望得到安全可靠并且快速的访问体验.针对Web网页过于膨胀以及第三脚本蚕食流量等问题,Radware向网站运营人员提出以下改进建议,帮助他们为用户提供最快最优质的 ...