从字符集发展史看Unicode和UTF-8的区别
从字符集发展史看Unicode和UTF-8的区别
版权声明
本文并非本人原创,其内容来源于网络,本文根据其演绎而来,具体出出已经无法考证,在这里只好给出我所参考的连接。
ASCII编码
我们都知道计算机来源于美国,并且计算机它比较笨,只知道 0 和 1 也就是电路的通和断(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的区别的更多相关文章
- Unicode和UTF的关系
目录结构: contents structure [+] 什么是USC UCS的编码方式 Unicode的来源 为什么需要Unicode Unicode的方式 Unicode和UTF UTF和Unic ...
- Unicode、UTF-8 和 ISO8859-1
Unicode.UTF-8 和 ISO8859-1到底有什么区别 1.本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文" ...
- 字符集转换: Ansi - Unicode
字符集转换: Ansi - Unicode wstring AnsiToUnicode (const string& strSrc ) { /*!< 分配目标空间 */ ,strSrc. ...
- unicode,ansi,utf-8,unicode big endian编码的区别
知乎--http://www.zhihu.com/question/23374078 http://wenku.baidu.com/view/cb9fe505cc17552707220865.html ...
- ASCII,Unicode,UTF-8,GBK 区别
编码历史与区别 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又 ...
- ascii、unicode、utf、gb等编码详解
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这 ...
- 多字符集(ANSI)和UNICODE及字符串处理方式准则
在我们编写程序的时候,使用最多的是字符串的处理,而ANSI和UNICODE的相互转换经常搞的我们头晕眼乱. 应该说UNICODE是一种比较好的编码方式,在我们的程序中应该尽量使用UNICODE编码方式 ...
- Unicode、UTF-8 和 ISO8859-1到底有什么区别
说明:本文转载于新浪博客,旨在方便知识总结.原文地址:http://blog.sina.com.cn/s/blog_673c81990100t1lc.html 本文主要包括以下几个方面:编码基本知识, ...
- 简单的看Unicode和UTF-8的区别
作者:uuspider链接:http://www.zhihu.com/question/23374078/answer/65352538来源:知乎著作权归作者所有,转载请联系作者获得授权. 举一个例子 ...
随机推荐
- 代码控制打电话、发短信、发邮件、打开手机app等操作
很多时候我们需要利用我门自己的app进行一些打电话.发短信等的操作,那么如何利用代码实现呢,下面就介绍一些简单的方法来实现这些操作. 一.打电话: <1>最简单.最直接的方法----直接跳 ...
- 【ARTS】01_12_左耳听风-20190128~20190203
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- k-means 图像分割
经典的无监督聚类算法,不多说,上代码. import numpy as np import pandas as pd import copy import matplotlib.pyplot as p ...
- linux系统的休眠与唤醒简介
转自:http://blog.csdn.net/haomcu/article/details/7398703 系统挂起(Suspend)是电源管理(APM&ACPI)的一个特性,给用户带来了很 ...
- vmware添加磁盘后linux无需重启识别的方法
cd /sys/class/scsi_host/ [root@centos4 scsi_host]# ls host0 host1 host2 有几个host就刷几次 [root@centos4 sc ...
- jenkins jar包上传maven仓库
1 Jenkins 编译后部署至 Maven 仓库 jenkins编译后构件(如:jar包)部署至maven仓库需修改以下内容:maven 仓库配置:项目 pom 文件:本地仓库的 sett ...
- React-Native 之 网络请求 fetch
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- git 使用https 和SSH 提交远程库小总结
一.使用https提交远程库 首先已经git commit -m “注释” 本地仓库关联远程github服务器:git remote add origin “https://XXXX.git” 提交 ...
- caffe:fine-tuning
http://blog.csdn.net/u010402786/article/details/70141261 https://zhuanlan.zhihu.com/p/22624331
- js闭包之应用场景
闭包的解释 当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,这时就产生了闭包 在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义 ...