Unicode与编码方式 Unicode可以表示世界上的每一个字符,每一个字符都有相应并且 唯一 的二进制编码 。Unicode是一种字符集,让几乎所有语言中的每个字符都和一个 唯一数字 对应起来 。
Unicode 是为了解决传统的字符编码方案的局限而产生的, 它为每种语言中的每个字符设定了统一并且唯一的二进制编码 ,以满足跨语言、跨平台进行文本转换、处理的要求 。也就是说世界上的任意一个字符,无论何种语言,都能在Unicode字符集中找到其对应的二进制编码 。
Unicode的表现方式是U+XXXXXX,X代表一位十六进制数,可以有4-6位,不足 4 位前补 0 补足 4 位,超过则按是几位就是几位 。
字符A的ASCII码是65,将65转换成16进制就是41(16×4+(16^0)×1 = 65),按照规则前面补0,那么字符A的Unicode表示就是U+0041,依次类推B的Unicode表示就是U+0042...等等,汉字"爱"的字符表示是“U+7231”
常见的编码方式有 UTF-8 , UTF-16 , GB2312 , GBK,它们都只是一种编码方式,每种编码有自己的规则 。
UTF-8是一种非常通用的 可变长 字符编码方式,范围由1-4个字节不等 。
UTF-16通常由2字节或者4字节表示一个字符,U+000~U+FFFF的范围内用2个字节表示 。
U+10000~U+10FFFF的范围内用4个字节表示 。
GB2312,每个汉字及符号以两个字节来表示,兼容ASCII码,GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312也收录了许多其他语音的文字及符号 。它所收录的汉字已经覆盖中国大陆99.75%的使用频率,对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来 GBK 及GB 18030汉字字符集的出现 。
GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1 国际标准 ,是前者向后者过渡过程中的一个承上启下的产物 。GBK编码,是在 GB2312-80 标准基础上的 内码 扩展规范,使用了双 字节 编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容 GB2312-80 标准
在JavaScript中,所有的string类型都是使用UTF-16编码的,形如 '\u00A9' 或者 '\uD87E\uDC04' ,详情参考MDN文档 Lexical_grammar。
所以JS中,将字符转换成Unicode如下:
用通信理论的思路可以理解为:
unicode是信源编码,对字符集数字化 。
utf-8是信道编码,为更好的存储和传输 。
一个很简单的例子:
一个用GBK编码的文件,我如果以UTF-8来解码的话,打开就会是一片乱码 。
再比如:
当然mata也可能会失效,如图
参考
Unicode中UTF-8与UTF-16编码详解
UTF-8与Unicode的区别
GB2312编码表
gb2312中的英文字母占几个字节?
漫画:什么是字符集和编码?ASCII、UTF-8、UTF-16、UTF-32 又是什么?
解决GB2312、GBK、UTF-8转换问题
Unicode和UTF编码转换
unicode编码是什么?Unicode是一种字符编码方案,它为每种语言中的每个字符都设定了统一唯一的二进制编码,以实现跨语言、跨平台进行文本转换、处理的要求 。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案 。目前的Unicode字符分为17组编排,0x0000至0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个 。
Unicode 编码表
BMP SMP SIP SSP
0000—0FFF 8000—8FFF 10000—10FFF 20000—20FFF 28000—28FFF E0000—E0FFF
1000—1FFF 9000—9FFF 21000—21FFF 29000—29FFF
2000—2FFF A000—AFFF 12000—12FFF 22000—22FFF 2A000—2AFFF
3000—3FFF B000—BFFF 23000—23FFF
4000—4FFF C000—CFFF 24000—24FFF 2F000—2FFFF
5000—5FFF D000—DFFF 1D000—1DFFF 25000—25FFF
6000—6FFF E000—EFFF 26000—26FFF
7000—7FFF F000—FFFF 1F000—1FFFF 27000—27FFF
Unicode是什么???Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等 。
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求 。1990年开始研发,1994年正式公布 。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以 。
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串'ABC'在Python内部都是ASCII编码的 。
Unicode 是为了解决传统的字符编码方案的局限而产生的,例如ISO 8859所定义的字符虽然在不同的国家中广泛地使用,可是在不同国家间却经常出现不兼容的情况 。
秒懂生活扩展阅读
- 高中物理的几种功能关系
- bin是什么文件夹能删吗
- 为什么手机连接电脑没反应
- 苹果6s多久能出来
- 二手货车能贷款吗
- 为什么有些人不能吃火龙果
- 王守义十三香能放在凉拌菜里吗
- 电影在哪能免费观看 免费在线看电影
- 开始吧女孩综艺 开始吧
- 怎么样才能辨别苹果6手机是真的