常用编码的对比(ASCII,GB2312,GBK,GB18030,UCS,Unicode)

在程序开发中,文字编码一直扮演着人畜无害,却背后捅一刀的角色。

  • 可能在源代码文件中,注释莫名其妙地变成了乱码。
  • 可能是发送给别人的文本,打开都是“锟斤拷”。
  • 可能是从一个程序拷贝到另一个程序,莫名其妙的丢失内容。
  • 可能是VS编译时,不停的提示“warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss”
  • 在某些字体下面,明明显示的很好的符号,更换字体就显示的乱七八糟。甚至直接是方框。

受限于早期系统设计的百花齐放,各大语言为了满足自己的需要发明了本国方言。

为了统一度量衡,Unicode应运而生。

但是即使是Unicode,也出现了UTF-8,UTF-16,UTF-32这样细分编码。

在B站上,有一个非常详细的字符编码讲解视频。其中涉及到编码的发展史,统一历程,以及锟斤拷这样的乱码究竟时怎么样产生的。非常推荐大家更加直观的了解Unicode编码是如何一统天下的。

有兴趣的可以移步观看。↓↓↓

锟斤拷�⊠是怎样炼成的——中文显示“⼊”门指南【柴知道】】

一、编码对比

1. ASCII

  • 每个字以1个字节来组成。
  • ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。

2. GB2312 / GBK / GB18030 / Big5

  • 简体使用GB2312最广
  • 繁体使用Big5最广
  • GB18030最全,基本兼容GBK。GBK完全兼容GB2312。

① GB2312

  • 每个字以2个字节来组成。
  • 共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

② GBK

  • 每个字以2个字节来组成。
  • 共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。

③ GB18030

  • 每个字可以由1个、2个或4个字节组成。
  • GB18030-2005,以汉字为主并包含多种我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的超大型中文编码字符集强制性标准,其中收入汉字70000余个。

④ Big5

  • 每个字以2个字节来组成。
  • 使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。

3. UCS

  • 通用多八位编码字符集(Universal Multiple-Octet Coded Character Set)也叫通用字符集(Universal Character Set, UCS),是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。
  • 由国际标准化组织(ISO)制定。

4. Unicode(UTF-8,UTF-16,UTF-32)

① 占用空间不同

  • UTF-8,每个字可以由1个、2个或4个字节组成。占用空间小,适合传输。
  • UTF-16,每个字可以由2个或4个字节组成。
  • UTF-32,每个字可以由4个字节组成。占用空间大,存在浪费。

② 查找速度不同

  • 由于UTF-8和UTF-16是变长编码。计算1000个文字的size需要遍历每一个字符进行计算。随机访问速度慢。
  • UTF-32是固定长度编码。计算1000个文字的size,可以直接*4,随机访问速度快。

二、VS编码转换插件推荐

FileEncoding

该插件可以在文本编辑器右下角直接查看当前文件编码,点击更换可直接进行编码转换。非常方便。

安装路径:Visual Studio MarketPlace

三、参考资料

【GiraKoo】常用编码的对比(ASCII,GB2312,GBK,GB18030,UCS,Unicode)的更多相关文章

  1. 字符编码-ASCII,GB2312,GBK,GB18030

    ASCII ASCII,GB2312,GBK,GB18030依次增加,向下兼容. 手机只需要支持GB2312 电脑中文windows只支持GBK 发展历程 如果你使用编译器是python2.0版本,默 ...

  2. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

  3. 汉字编码:GB2312, GBK, GB18030, Big5

    前一篇博文:ANSI是什么编码?中有这样一段小故事: 话说计算机是由美国佬搞出来的嘛,他们觉得一个字节(可以表示256个编码)表示英语世界里所有的字母.数字和常用特殊符号已经绰绰有余了(其实ASCII ...

  4. 编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头

    编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101 ...

  5. GB2312,GBK,GB18030,UTF8四种汉字编码标准有什么差别和联系

     从GB2312.GBK 到 GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有同样的编码,后面的标准支持很多其它的字符.在这些编码中,英文和中文能够统一地处理. 区分中文编 ...

  6. ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别(转载)

    原文出处:http://www.blogjava.net/xcp/archive/2009/10/29/coding2.html 最近老为编码问题而烦燥,下定决心一定要将其弄明白!本文主要总结网上一些 ...

  7. ASCII,GB2312,GBK,Unicode,Utf-8

    1.ASCII:American Stardand Code for Information Interchange,是当时美国制定出来的一套编码系统,使用7位或8位二进制来表示西文字符,0-31以及 ...

  8. 第48篇 字符编码探密--ASCII,UTF8,GBK,Unicode

    原文地址:http://blog.laofu.online/2017/08/22/encode-string/ ASCII 的由来 在计算机的“原始社会”,有人想把日常的使用的语言使用计算机来表示, ...

  9. 编码标准:ASCII、GBK、Unicode(UTF8、UTF16、UTF32)

    英文编码(单字节字符集,码值范围0~127):字节最高位是0 ASCII编码,用于英文字符.中文编码(双字节字符集):首字节(8位)的最高位是1.可依据首字节最高位来判断中英文. GB2312, 旧版 ...

  10. 汉字编码 (GB2312 GBK GB18030)

    GB2312 收录简化汉字及符号.字母.日文假名等共7445个图形字符,其中汉字占6763个 每个符号都用两个字节表示,每个字节均采用七位编码表示,习惯上 第一个字节是高字节,第二个字节是低字节 GB ...

随机推荐

  1. mysql基础知识&&常用命令

    了解 什么是数据库?什么是数据管理系统?什么是SQL,他们之间的关系又是什么? 数据库 英文单词DataBase,简称DB,按照一定格式存储数据的一些文件的组合. 顾名思义:存储数据的仓库,实际上就是 ...

  2. Python通过ssh登录实现报文监听

    Python自动化ssh登录目标主机,实现报文长度length 0监听,并根据反馈信息弹窗报警: 代码比较简陋,后续记得优化改进. #_*_coding:utf-8 _*_ #!/usr/bin/py ...

  3. 工良出品:包教会,Hadoop、Hive 搭建部署简易教程

    目录 导读 Hadoop.Hive 是什么 运行环境 Java 环境 Mysql 下载 Hadoop.Hive 和 驱动 安装 Hadoop core-site.xml hdfs-site.xml m ...

  4. 自己动手从零写桌面操作系统GrapeOS系列教程——19.硬盘读写理论知识

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 一.硬盘控制器 我们前面已经讲过硬盘控制器是一种I/O接口,CPU通过它就能间接的读写硬盘.硬盘控制器主要有IDE和SATA两种,我们这里只考虑 ...

  5. Tomcat启动报错,Server Tomcat v8.0 Server at localhost failed to start

    Eclipse 中Tomcat 启动报错Eclipse的提示窗口  Server Tomcat v8.0 Server at localhost failed to start .日志输出中报   F ...

  6. R语言文本挖掘细胞词库的转换

    搜狗细胞词库解析 一. 加载R包转换 library(rJava) library(Rwordseg) write.csv(as.data.frame(importSogouScel('wuliu.s ...

  7. day3 函数的定义和调用,练习编写简单的程序(记录1)

    一.函数的定义 可以分为以下两种: 1.函数声明和函数定义分离 这种方法将函数声明和函数定义分开,通常在头文件中先声明函数原型,然后在源文件中实现函数定义. 例如,头文件 example.h 中声明了 ...

  8. 逍遥自在学C语言 | 位运算符&的高级用法

    前言 在上一篇文章中,我们介绍了&运算符的基础用法,本篇文章,我们将介绍& 运算符的一些高级用法. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位 ...

  9. Java设计模式 —— 适配器模式

    9 适配器模式 9.1 结构型模式 结构型模式(Structural Pattern) 关注如何将现有类或对象组织在一起形成更强大的结构.结构型模式根据描述目标不同可以分为两种: 类结构型模式:关心类 ...

  10. LeeCode 942 增减字符串匹配

    LeeCode 942 题目描述: 由范围 [0,n] 内所有整数组成的 n+1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中: 如果 perm[i] < perm[i + 1]  ...