标签:字符 UTF 字节 16 32 GB2312 Unicode ASCII
通俗易懂说-字符编码(ASCII,GB2312,GBK,Unicode,UTF-8/16/32)
- 1. 什么是字符?字符集?
- 2. 为什么需要字符编码?
- 3. 什么是大小字节序?
- 4. 什么是ASCII?
- 5. 什么是GB2312?GBK?
- 6. 什么是Unicode?
- 7. 什么是UTF-8/16/32?
- 8. 参考
1. 什么是字符?字符集?
字符: 各种文字和符号的总称,包括各国家文字,符号,数字等。
字符集: 为了表示计算机能够处理字符信息而选取的字符的集合。
字符编码: 建立一种转换规则或者说映射关系,将字符转换成计算机中可以表示的二进制比特序列。
2. 为什么需要字符编码?
所有字符在计算机内都是通过0和1二进制表示的,那么如何按照一定规则表示就是字符编码。
3. 什么是大小字节序?
3.1 为什么有字节序?
因为在计算机系统中,存储对象是以字节为单位的,每个地址单元都对应着一个字节。
对于单字节如char类型而言,存放和传输方式都是一样的。但是对于多字节如int类型,占用两个字节,那么其存储和传输按照什么顺序进行呢?大小字节序应运而生。
3.2 大小字节序
**小端字节序(little endian ):**低字节存储在低地址,记忆:高地址高字节
操作系统处理一般是小端字节序
**大端字节序(big endian):**低字节存储在高地址
网络传输一般是是大端
举例:
假设十六进制1234存储在地址为0x0000,和0x0001 上面,那么其大小端存储如下
0x0001 0x0000
大端: 34 12
小端: 12 34
4. 什么是ASCII?
ASCII: 美国信息交换标准代码
ASCII是最早最通用的单字节编码系统,用一个字节来表示英文字符和部分符号
0x0xxxxxxx ,最高位为0,用7比特表示字符,总共可以表示127个字符。
如: A的ascii是65 ,Z的ascii是90 ,a的ascii是97,z的ascii是122,0的ascii是48,9的ascii是57
5. 什么是GB2312?GBK?
原因: 问题来了,ASCII由于只能表示127种字符,但是世界上这么多国家这么多语言,不够怎么办? 这就出现了中国的GB2312和扩展字符编码GBK。
GB2312:
GB2312:是中国在1981年实施的一套汉字处理编码方式,用两字节来表示中文字符
GB2312的缺点: 局限性,只能表示65536个字符
GBK:
GBK:向下兼容了GB2312 和 ASCII,它是GB2312的升级版,还收录了汉字首字符号,竖排标点符号等
6. 什么是Unicode?
Unicode跟中国做的GBK类似,但是格局更大,收录了世界所有的文字和符号
Unicode通常采用2个字节表示一个字符,与ASCII兼容,所有的原英文编码从单字节变成双字节编码,高字节全部置0。
缺点: Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。其中,UTF-8/16/32 都是 Unicode的一种实现方式。
7. 什么是UTF-8/16/32?
UTF-8:
互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是互联网上使用最广额一种Unicode的实现方式。
UTF-8 与 Unicode的关系: UTF-8是Unicode的实现方式之一。
编码方式: 采用一种变长的编码方式,它可以使用1~4字节表示一个符号,根据不同符号而变化字节长度。
UTF-16: 字符用两个字节或四个字节表示
UTF-32: 字符用四个字节表示
8. 参考
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
标签:字符,UTF,字节,16,32,GB2312,Unicode,ASCII 来源: https://blog.csdn.net/lqy971966/article/details/89284662
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。