字符编码集合

1. ASCII

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于罗马字母表的一套电脑编码系统,它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO 646。

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

大小为一个字节,最多可代表255个符号,美国人发明的时候 对于几个简简单单的英文字母已经够用了,随着计算机普及,像中国、韩国、日本这样的象形文字,255个是远远不够的,光常用汉字都有8000个,一个字节可以代表255,不敢想,于是就有了GB-2312。

GB2312

GB2312又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原中国国家标准总局发布,1981年5月1日实施,是中国国家标准的简体中文字符集。它所收录的汉字已经覆盖99.75%的使用频率,基本满足了汉字的计算机处理需要。在中国大陆和新加坡获广泛使用。

Unicode编码

九层之台,起于累土。这样世界性的标准绝不是一蹴而就,必有其坚实的基础,设计原则就是Unicode的一大基础,在《The Unicode Standard Version 6.2 - Core Specification》有提到Unicode的设计原则,

但是这样也不行,GB-2312虽然能包容绝大部分的中文汉字,这没问题,但是别的国家 比如韩国,新加坡,日本等等国家怎么办,他们有他们的专门编码 就像中国的GB-2312一样,那么问题就出现了 比如 4E 2D在GB-2312中表示一个汉字,而同样还是这个编码,却在不同的国家对应的文字不同,所以各种编码的字符互不兼容,相互之间的通信可能由于编码的不同,而导致对方看到的是乱码,这就如中国历史中的大秦统一文字和度量单位之前的华夏文明一样,语言不通、货币不通,交流困难。

时间的车轮滚滚向前,推动着历史的发展,于是Unicode(Universal Coded Character Set)出现了,它对世界上大部分的文字系统进行了整理、编码,形成了一张巨大的文字集,使得计算机能够以更简单的方式来呈现和处理字符,它的目的就是为所有的字符提供统一的编码,任何的平台、系统、设备、应用或者语言都能兼容且无风险使用。

Unicode编码的范围是:0-0xFFFF,可以容纳100多万个符号

UTF-16和UTF-8是Unicode的实现方式

Unicode只是一个符号集,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,于是有了UTF-16和UTF-8
并不是像大众哪有认为,Unicode就是UTF-8,这是不对了,虽然普遍形式是UTF-8,但是UTF-8和UTF-16只是Unicode集合中的一个子集而已

UTF-16

UTF-16是以16位无符号整数为单位,不表示一个字符只有16位,看字符的Unicode编码处于什么范围而定,有可能是2个字节,有可能是4个字节,现在机器上的Unicode编码一般指的就是UTF-16,如果不提UTF-16和UTF-8,只说Unicode的话不能认定是2个字节的,它只是一种符号集,存储方式有UTF-16和UTF-8规定

2个字节看一个存储单元,不满2字节也是使用2字节,超出2字节,也是按2的倍数节字存储,浪费了不少空间,导致网络传输的时候明明4个字节可以传输完的东西 硬是花费了8个字节,于是就有了UTF-8编码。

UTF-8:

Unicode编码(16进制) UTF-8字节流(二进制)
000000-00007F 0xxxxxxx
000080-0007FF 110xxxxx 10xxxxxx
000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx
01000-10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

比如中国的“中”编码是 E4 B8 AD,对照上面这个范围段,
E4 B8 AD 在000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx范围
转二进制:
原:1110 0100 1011 1000 1010 1101
对比: 1110 (0100)10(1 1000) 10(10 1101)

在UTF-8里括号里的才是有效数据,拿出来转0100 1110 0010 1101 转16进制=4E 2D,按我的思维可以理解为一个解密,4E 2D是Unicode对中国的中唯一标识,在UTF-16中直接存4E 2D,但在UTF-8里就会变长,先看4E 2D属于哪个区间,然后按对应的二进制存储
对比:
UTF-16解析方便,拿到数据直接2个字节一砍 ,然后解析就行了,解析快但是可能有3个字节的时候会站4字节的空间,虽然UTF-8也是Unicode编码,但是是变长的,可能是1字节可能是4字节,解析就会麻烦些,如果项目、网络传输的数据流字母居多,是一个字节或俩个字节能存下的,就用UTF-8,1个字节搞定,如果项目、网络传输是中文居多,就用UTF-16,使用UTF-8的话 解析会很麻烦,而且空间也没剩下,可能还会多

UTF-32

对于UTF-16更暴力,不管你是多大数据,直接以4字节为单位存储

BOM (Byte Order Mark)字节顺序标识

在你的文件头部,存储这几个字节,告诉别人是以何种方式存储
UTF-8 EF BB BF
UTF-16LE FF FE 小端存储
UTF-16BE FE FF 大端存储

字符编码-带你走出Unicode与UTF-8的误区相关推荐

  1. 带你走出计算机安全防范的六个误区

    当我在帮朋友处理计算机安全问题的时候,总会遇到他们这样问我:我的系统上已经安装了防火墙和杀毒软件,而且都是正版的,并且天天升级病毒库,为什么还会感染***呢?就目前来说,不只是普通网络用户存在这样的问 ...

  2. 字符编码笔记:ASCII,Unicode和UTF-8(转载)

    字符编码笔记:ASCII,Unicode和UTF-8 作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个 ...

  3. 字符编码详解及由来(UNICODE,UTF-8,GBK)

    字符编码详解及由来(UNICODE,UTF-8,GBK) 各种字符编码方式详解及由来(ANSI,UNICODE,UTF-8,GB2312,GBK) - 2009-01-29 09:53     一直对 ...

  4. 字符编码笔记:ASCII,Unicode 和 UTF-8

    字符编码笔记:ASCII,Unicode 和 UTF-8 作者: 阮一峰 日期: 2007年10月28日 字符编码笔记:ASCII,Unicode 和 UTF-8 今天中午,我突然想搞清楚 Unico ...

  5. 字符编码笔记:ASCII,Unicode 和 UTF-8(转帖、留着自己学习)

    http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 阮一峰的网络日志 » 首页 » 档案 搜索 上一篇:<新编 ...

  6. 如何关闭电脑自动更新?方案三部曲带你走出自动更新的阴影

    如何关闭电脑自动更新?电脑的更新会让我们的系统功能更上一层楼,但同时也有弊端,如果你的配置承受不住这个更新后的适配要求的话,电脑会变得非常不稳定.而道理我们都懂,但是每次它偷偷摸摸地更新都让人&quo ...

  7. 批判性思维 带你走出思维的误区 原书第9版_(美)摩尔,(美)帕克著2012.01北京:机械工业出版社_P308_完整版PDF电子书下载 带索引书签目

    批判性思维  带你走出思维的误区  原书第9版_(美)摩尔,(美)帕克著2012.01北京:机械工业出版社_P308_完整版PDF电子书下载 带索引书签目录高清版_12904647 http://pa ...

  8. 九龙战登录只显示一个服务器,九龙战新手必读 带你走出六大误区

    原标题:九龙战新手必读 带你走出六大误区 腾讯第一动作手游九龙战开启了不删档测试,相信很多玩家已经感受到了来自小怪的压力吧?记得第一次玩的时候,连第一关都没打过去.那么今天小编就给大家介绍一些小知识小 ...

  9. Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    文章目录 前言 简述 ASCII GBK Unicode UTF-8 应用场景 开发环境 编码转换 16进制数值转换为16进制字符 16进制数值转化为字符串 16进制字符串转换为Unicode字符串 ...

  10. 字符编码笔记:ASCII,Unicode和UTF-8

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...

最新文章

  1. HTML中的form表单有一个关键属性 enctype
  2. ORACLE选择hint,ORACLE中的的HINT详解
  3. Asp.net Core认证和授权:JWT认证和授权
  4. Difference between prop and attr in different version of jquery
  5. 【计算机网络】网络安全 : 入侵检测系统 ( 基于特征的入侵检测系统 | 基于异常的入侵检测系统 )
  6. linux 类似winscp_mac上有什么类似winscp的软件?
  7. 经验之谈:Linux运维工程师所需技能
  8. r与python自然语言处理_Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器 | 我爱自然语言处理...
  9. 矩阵快速幂及斐波那契数列模板
  10. 计算机的编程发源地,计算机编程: C典型上机试题
  11. 一加到1亿。C语言_一加官方道歉!这下良心了:老用户欢呼
  12. Blender相关的一些链接(持续更新)
  13. CodeForces 828C String Reconstruction(并查集思想)
  14. Angular2 的 View Encapsulation(样式封装)
  15. CSS从入门到精通(CSS背景和列表)
  16. linux下sybase创建数据库,Linux下Sybase数据库安装
  17. kali教程--破解wifi密码
  18. python聊天室设计_基于python的GUI聊天室设计
  19. PHP学习路线图(2021年最新版)
  20. 手机定位浅析 AGPS定位 LBS基站定位 卫星定位

热门文章

  1. Git出现 Your local changes to the following files would be overwritten by merge: con
  2. 中国菜刀使用与原理分析
  3. 互联网晚报 | 10月21日 星期四 | 微信支付上线品牌视频号;快手短剧日活用户达2.3亿;《长津湖》票房升至中国影史第三...
  4. 在Pycharm中,全文搜索、替换,以及单独文件搜索、替换!
  5. CTSC2016APIO2016爆零记
  6. 在局域网内互传文件的方法
  7. 刘德华--5难忘长发飘飘
  8. python UI自动化测试-----常见面试题汇总
  9. mysql 安装失败原因大全(diao ,基本都让我给踩了个遍,这运气...)
  10. macOS Big Sur 11.6.5 (20G527) Boot ISO 原版可引导镜像