编程通用知识 字符编码(ascii,unicode,utf-8)

ascii,unicode,utf-x都是文字和数字的映射, 因为计算机只能存储数字.

ascii

1.早起用8位二进制来编码英文(最前面以为是0,实际只用了7位),既产生了128个元素的ascii码表.
2.但是128个只能表示英文,所以其他国家就决定把字节中最前面一位拿来使用,原来的128个元素,就编程了256个字符,也即是说最高位为1的时候,各个国际自己给后面的位(1xxxxxxx)赋予他们国家的意义.
3.这样还是有两个问题,1)各个国家的标准不一样,比如130 在法语中代表了 é,但是在希伯来语中却代表了字母 Gimel,标准不通用; 2)中文汉字128个显然不够

unicome

1.为了解决ascii编码的不足,世界各国就制定了统一的编码标准,既unicode,编码范围是0x000000到0x10FFFF,共110万个字符,每个字符都有唯一的Unicode编号.
2.unicode本身只规定了每个字符的编号是多少,并没有规定在计算机里如何存储,如何存储是utf-x来决定了.也就是说unicode是一个规范,而utf-x是这个规范的实现

utf-x

utf-x表示了unicode如何在电脑中存储,以为例,的unicode编码是738B

utf-32

以四个字节表示,不足高位补0,所以就在计算机中存储就为0000FEFF0000738BFFFE00008B730000
0000FEFF0000FFFE分别代表的大小端,在读取文件时先读取此大小端的规定

utf-16

1.使用变长字节表示:
1)0x0000~0xFFFF的字符,用两个字节表示
2)0x10000~10FFFF之间的字符,用四个字节表示
2.开头使用FEFF和FFFE来表示大小端

utf-8

1.变长字节表示
1)字节第一位是0的,和ascii编码相同,使用一个字节
2)对于第一位非0的,需要多个字节来表示.假设utf-8使用了n(2=<n<=4)个字节表示字符,第一个字节的前n位都为1,第n+1位都为0,后面的字节一律设为10,将unicode编码字节按顺序填入没有规定的位置即可
3)utf-8 没有大小端

编码范围二进制
0x00~0x7f(0-127)0xxxxxxx
0x80~0x7FF(128-2047)110xxxxx 10xxxxxx

0x800~0xFFFF(2048-65535)1110xxxx 10xxxxxx 10xxxxxx
0x10000~0x10FFFF(65535以上)|1110xxx 10xxxxxx 10xxxxxx 10xxxxxx

的各个编码

编码类别结果
Unicode编码738B
UTF8编码E78E8B
UTF16BE编码FEFF738B
UTF16LE编码FFFE8B73
UTF32BE编码0000FEFF0000738B
UTF32LE编码FFFE00008B730000

参考:
https://blog.csdn.net/hongsong673150343/article/details/88584753
https://www.qqxiuzi.cn/bianma/Unicode-UTF.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值