unicode编码

1、unicode编码
unicode统一码,万国码,单一码,是计算机科学领域的一项业界标准。是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

官网:https://home.unicode.org/

1.1 版本
unicode发布了多个版本,持续更新中。
unicode 1.0 1991年10月
...
unicode 15.0 2022年9月13日

1.2 编码方式

unicode包含世界上绝大多数的文字和符号,但是并不是全部,少数新生字以及少数人使用的语言并未收容。

统一码字符集UCS(character set),分为UCS-2和UCS-4,即分别用2个字节和4个字节表达。

UCS-2,占用两个字节,表达范围0-65535,可以容纳65536个字符。在java和其他编程中,一般使用的都是UCS-2。

UCS-4,占用四个字节,用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。

1.3 实现方式

指的是将字符所对应的码位表达为二进制数据。

当然,直接将字符的码位表达是可以的,比如“字”对应23383,直接记录该数字或者其二进制、十进制文本形式等。java的char类型,以及网络通信有时会这样使用。

而常见的,是通过UTF-8、UTF-16和UTF-32将unicode码位转为相应的二进制数据。区别在于表达的字节长度和填充方式。

2、utf-8
是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。(这里的ascii码指的是ascii基础码,并不兼容ascii扩展码)

(1)utf-8使用1-4个字节为每个unicode字符编码,但一般说的是ucs-2所表达的字符

(2)utf-8兼容ascii基础码,0x00-0x7f。但是并不兼容ascii扩展码

(3)带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等字母则需要2字节编码(Unicode范围由U+0080~U+07FF)。

(4)其他语言的字符(包括中日韩文字、东南亚文字、中东文字等)包含了大部分常用字,使用3字节编码。

(5)其他极少使用的语言字符使用4字节编码。

(6)具体的编码方式

首字节会以0、10、110和1110的形式开头,表示该字符是1-4个字节表示。

其余字节的头两个位元都是以 "10" 开始,使文字处理器能够较快地找出每个字符的开始位置。

排除作为定位的比特后的有效位,连接起来表示的二进制数即unicode字符的码位。

posted @ 2023-07-29 15:33  挖洞404  阅读(80)  评论(0编辑  收藏  举报