【GiraKoo】常用编码的对比(ASCII,GB2312,GBK,GB18030,UCS,Unicode)
常用编码的对比(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)的更多相关文章
- 字符编码-ASCII,GB2312,GBK,GB18030
ASCII ASCII,GB2312,GBK,GB18030依次增加,向下兼容. 手机只需要支持GB2312 电脑中文windows只支持GBK 发展历程 如果你使用编译器是python2.0版本,默 ...
- 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 普通的linux 和 普通的windows. ...
- 汉字编码:GB2312, GBK, GB18030, Big5
前一篇博文:ANSI是什么编码?中有这样一段小故事: 话说计算机是由美国佬搞出来的嘛,他们觉得一个字节(可以表示256个编码)表示英语世界里所有的字母.数字和常用特殊符号已经绰绰有余了(其实ASCII ...
- 编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头
编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101 ...
- GB2312,GBK,GB18030,UTF8四种汉字编码标准有什么差别和联系
从GB2312.GBK 到 GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有同样的编码,后面的标准支持很多其它的字符.在这些编码中,英文和中文能够统一地处理. 区分中文编 ...
- ASCII,unicode, utf8 ,big5 ,gb2312,gbk,gb18030等几种常用编码区别(转载)
原文出处:http://www.blogjava.net/xcp/archive/2009/10/29/coding2.html 最近老为编码问题而烦燥,下定决心一定要将其弄明白!本文主要总结网上一些 ...
- ASCII,GB2312,GBK,Unicode,Utf-8
1.ASCII:American Stardand Code for Information Interchange,是当时美国制定出来的一套编码系统,使用7位或8位二进制来表示西文字符,0-31以及 ...
- 第48篇 字符编码探密--ASCII,UTF8,GBK,Unicode
原文地址:http://blog.laofu.online/2017/08/22/encode-string/ ASCII 的由来 在计算机的“原始社会”,有人想把日常的使用的语言使用计算机来表示, ...
- 编码标准:ASCII、GBK、Unicode(UTF8、UTF16、UTF32)
英文编码(单字节字符集,码值范围0~127):字节最高位是0 ASCII编码,用于英文字符.中文编码(双字节字符集):首字节(8位)的最高位是1.可依据首字节最高位来判断中英文. GB2312, 旧版 ...
- 汉字编码 (GB2312 GBK GB18030)
GB2312 收录简化汉字及符号.字母.日文假名等共7445个图形字符,其中汉字占6763个 每个符号都用两个字节表示,每个字节均采用七位编码表示,习惯上 第一个字节是高字节,第二个字节是低字节 GB ...
随机推荐
- mysql基础知识&&常用命令
了解 什么是数据库?什么是数据管理系统?什么是SQL,他们之间的关系又是什么? 数据库 英文单词DataBase,简称DB,按照一定格式存储数据的一些文件的组合. 顾名思义:存储数据的仓库,实际上就是 ...
- Python通过ssh登录实现报文监听
Python自动化ssh登录目标主机,实现报文长度length 0监听,并根据反馈信息弹窗报警: 代码比较简陋,后续记得优化改进. #_*_coding:utf-8 _*_ #!/usr/bin/py ...
- 工良出品:包教会,Hadoop、Hive 搭建部署简易教程
目录 导读 Hadoop.Hive 是什么 运行环境 Java 环境 Mysql 下载 Hadoop.Hive 和 驱动 安装 Hadoop core-site.xml hdfs-site.xml m ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——19.硬盘读写理论知识
学习操作系统原理最好的方法是自己写一个简单的操作系统. 一.硬盘控制器 我们前面已经讲过硬盘控制器是一种I/O接口,CPU通过它就能间接的读写硬盘.硬盘控制器主要有IDE和SATA两种,我们这里只考虑 ...
- 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 ...
- R语言文本挖掘细胞词库的转换
搜狗细胞词库解析 一. 加载R包转换 library(rJava) library(Rwordseg) write.csv(as.data.frame(importSogouScel('wuliu.s ...
- day3 函数的定义和调用,练习编写简单的程序(记录1)
一.函数的定义 可以分为以下两种: 1.函数声明和函数定义分离 这种方法将函数声明和函数定义分开,通常在头文件中先声明函数原型,然后在源文件中实现函数定义. 例如,头文件 example.h 中声明了 ...
- 逍遥自在学C语言 | 位运算符&的高级用法
前言 在上一篇文章中,我们介绍了&运算符的基础用法,本篇文章,我们将介绍& 运算符的一些高级用法. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位 ...
- Java设计模式 —— 适配器模式
9 适配器模式 9.1 结构型模式 结构型模式(Structural Pattern) 关注如何将现有类或对象组织在一起形成更强大的结构.结构型模式根据描述目标不同可以分为两种: 类结构型模式:关心类 ...
- LeeCode 942 增减字符串匹配
LeeCode 942 题目描述: 由范围 [0,n] 内所有整数组成的 n+1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中: 如果 perm[i] < perm[i + 1] ...