常用编码简单理解

ASCII:

全称为:American Standard Code for Information Interchange(美国信息交换标准代码)

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(即值为0和1),而定义具体用哪些二进制数字表示哪个符号的规则就叫编码,ASCII编码就是其中的一种,ASCII码涵盖了所有的大写和小写字母,数字0 到9,标点符号,以及在美式英语中使用的特殊控制字符,对照关系见图1和图2。

从图1和图2中,可以看到ASCII有256个字符(0-255),而在二进制中,8位二进制0000 0000 - 1111 1111正好代表0-255。在计算机中,8bit=1Byte,所以说存储每个ASCII码占用的空间为1字节,因此ASCII是一种标准的单字节字符编码。

图1

图2

GB2312:

从图1和图2中,可以看到ASCII编码所能代表的字符实在是太少,这就意味着其他国家语言的文字,是无法通过ASCII表示的。为了能表示中文字符,我国在ASCII编码的基础上,扩展出了GB2312编码,但是GB2312编码仅收录了大陆普遍使用的简体字字符: 汉字6763个,符号715个,总计7478个字符,存储空间占用2字节。

Big-5:

GB2312仅仅收录了简体中文相关的字符,而台湾、香港等地依然在使用繁体中文。为了解决这个问题,台湾则在ASCII编码的基础上扩展出了Big-5编码,中文名大五码,是台湾繁体字的字符集,收录13060个繁体汉字,808个符号,总计13868个字符,存储空间占用2字节。Big-5与GB2312由于编码格式不同,所以相互之间不兼容。

GBK1.0:

前面提到的GB2312及Big-5编码虽然都是表示中文,但各自所能表示的中文字符依然有限,因此诞生了一种新的字符集编码:GKB1.0。GBK1.0收录了21003个汉字,882个符号,共计21885个字符,包括了中日韩(CJK)统一汉字20902个、扩展A集(CJK Ext-A) 中的汉字52个,存储空间占用2字节。

GBK1.0包含了Big-5中的繁体字,但是编码格式与Big-5不一样,所以仅仅是包含了Big-5的字符,因此GBK1.0与Big-5是不兼容的,但是兼容GB2312。

GB18030:

GB18030是在GBK1.0基础上扩展的字符集编码(兼容GBK1.0),收录了GBK字符集和CJK Ext-A 全部6582个汉字,共计27533个汉字,是包含了我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的超大型中文编码字符集,采用1-4字节变长字节码存储,是目前汉字编码的标准码。

Unicode:

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。

全世界各个国家都可以在ASCII编码的基础上扩展出包含本国字符的编码,基于这种前提下,难免会出现编码冲突或者不兼容的情况,为了统一所有文字的编码,Unicode应运而生,Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode用2字节表示一个字符,这意味着原有的英文编码(ASCII)从单字节变成双字节,只需要把高字节全部填为0就可以,即Unicode兼容ASCII,但并不兼容GB18030。

UTF-8:

Unicode编码虽然统一了各种语言的字符,但是其每个字符的存储空间都需要2字节,而在使用ASCII编码就能完美解决问题的系统中,改用Unicode编码则意味着需要翻倍的存储空间,为此,诞生了一种针对Unicode的可变长度字符编码:UTF-8。目前世界流行的通用编码就是UTF-8。

UTF-8是对Unicode编码的压缩和优化,但是他并不兼容Unicode。UTF-8不再像Unicode那样使用2字节存储字符,而是将所有的字符和符号进行分类:
        1、ASCII中的字符使用1个字节存储
        2、欧洲的字符使用2个字节存储(如德语等)
        3、东亚的字符使用3个字节存储(中文字符包含在其中)
        4、其他字符使用4字节存储

乱码的问题:

与字符相关的操作有存储和显示两种,从上述编码的介绍中可以看到,字符编码之间存在不兼容的情况,当存储字符使用的编码与显示字符使用的编码不一致或者不兼容的时候,就会出现乱码。 这就是乱码的根源,所以解决乱码的办法非常简单,只需要更改显示端的字符集编码,使之与存储所用的字符集编码一致或者兼容,即可正常显示内容。

原文地址:https://www.cnblogs.com/broadway/p/11406652.html

时间: 2024-10-06 19:22:47

常用编码简单理解的相关文章

常用编码简单说明

ascii编码: 这是最早的一种编码,很多其他的编码都会兼容ascii编码,ascii编码只包含常用的英文字母,数字,以及一些特殊字符,还有部分控制字符. 每个字符由占用一个字节的存储空间,因为最多只包含127个字符,而一个字节(8bit)最多可以存256(2^8)个字符,故其最高位都为0. 例如大写英文字母'A'对应的ascii码值为65,用二进制表示就是01000001. gb2312编码: 由于计算机是美国人发明的,在设计编码的时候没有考虑到别国的文字,而ascii编码中是不包含别国的文字

简单理解计算机通信

简单理解计算机通信 写在前面: 在计算机刚出现的时候,只能在本机进行一些运算处理,想将一台计算机中的数据转移到另一台计算机中,需要通过外部存储介质来传输,例如磁带.软盘.而网络技术的出现,使得计算机间可以通过一些传输介质(网线.光纤等),实现快速的数据传输和信息交互.如今,网络已无处不在,那么,计算机之间究竟是如何通信的呢?下面会通过一些基础的网络知识来简单理解计算机之间的通信过程. 网络通信模型: 网络通信模型是一种概念模型和框架,旨在使各种计算机在世界范围内互连为网络.其中有OSI七层模型和

Javascript闭包简单理解

提到闭包,想必大家都早有耳闻,下面说下我的简单理解.说实话平时工作中实际手动写闭包的场景并不多,但是项目中用到的第三方框架和组件或多或少用到了闭包.所以,了解闭包是非常必要的.呵呵... 一.什么是闭包简而言之,就是能够读取其他函数内部变量的函数.由于JS变量作用域的特性,外部不能访问内部变量,内部可以外部变量. 二.使用场景1. 实现私有成员.2. 保护命名空间,避免污染全局变量.3. 缓存变量. 先看一个封装的例子: var person = function () { // 变量作用域为函

[干货分享]git的简单理解及基础操作命令

前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制>这本书(偏理论,内容完善,很不错),针对所学内容建了git仓库测试,且写了不少git操作命令的笔记,做个分享,有错误的地方各位大大也给提出,好做修改~ Git是一款免费.开源的.用Linux内核开发的分布式版本控制系统. git和svn有什么区别呢? git采用分布式版本库管理,而svn采用集中式版本库管理. 集中式版本库管理需要有一台存放版本库的服务器,

浮动的简单理解

行内元素和块级元素都可以浮动,浮动后都变为块级元素: 浮动元素会使周围的行框缩短,所以就会产生文本元素围绕浮动框的现象.所以常用来进行文本围绕图片的表现: 如果上边先有浮动元素,对于块级元素形成的块级框就会向上到浮动元素的下方,但是里边包含的文本还是在浮动元素的周围或者包含不到就跑的下边: 先有浮动,后有普通流中的 <p style="width:200px;height:200px;border: 1px solid red;"> 这是对浮动的测试,先有浮动后有文档流中的

简单理解网页源码(HTML源代码)

程序员无论做什么程序, 基本都会接触HTML, 如果做web开发 这就是吃饭的家伙, 移动端APP 的没学过HTML不要紧, 但是要一眼大概可以看懂网页源代码, 有机会最好亲自学习一下HTML5, 最自身的提高还是有所帮助的 HTML, 超文本标记语言. 简单理解为某些字句加上标志的语言,从而实现预期的特定效果.网页正是由这种HTML语言所编写出来的.作为一套标记语言,基本上只要明白各种标记的用法就算学会了HTML HTML的语法格式分为嵌套与非嵌套两类,嵌套格式为<标记>...</标记

语音编码-简单理解

语音编码分为三大类: 1.波形编码 像PCM.ADPCM属于波形编码,该编码方式针对波形的每个样本点进行直接量化,或者利用波形之间的相关性进行压缩,去掉冗余,能够保持比较好的语音质量,但是编码速率要求高,压缩小. 2.参量编码 像LPC编码,Formant编码,vocoder编码等属于参量编码.该编码方式对语音信号进行建模,提取出能代表该段语音的声学参数,对代表模型的声学参数进行编码,解码端解码出模型参数,根据重建模型,恢复出语音波形.很明显,该编码方式的特点就是压缩大,速率要求低,但是语音质量

【知了堂学习笔记】java中常用集合的理解

最近学习了java中常用集合类的一些知识,在这里作为一只小白,我来谈谈我的理解,顺带总结知识点. 引入:在没有接触之前,听到集合,给我感觉是想到了数学中的集合一样,里面存放着一个一个的元素.其实不然,这个集合也就差不多,是用来存放元素的容器. Java中的集合类包含的内容很多而且很重要,很多数据的存储和处理(排序,去重,筛选等)都需要通过集合类来完成. 今天我要谈的主要是,如下图所示: 1.Collection Collection是最基本的集合类型,若要检查Collection中的元素,可以使

常用编码学习

常用编码 在计算机世界,所有信息都是用二进制存储.每一个二进制有0和1两种状态. 所以8个二进制就可以组合成256种状态,也就是一个字节. 也就是说,一个字节可以用来表示256种不同的状态,每一个状态对应一个符号,也就是256个符号,从00000000-11111111. ASCII码 一共规定了128个字符的编码,包含大小写字母.数字.还有空格等一些常用符号,这128个符号中有32个不能打印出来的控制符号.只占用了一个字节的后面7位,也就是最前面一位都是0. 大写字母A是65,也就是二进制的0