UTF-8字符集

如果UNICODE 字符由2个 字节表示,则编码成UTF-8很可能需要3个 字节。而如果UNICODE 字符由4个字节表示,则编码成UTF-8可能需要6个字节。用4个或6个 字节去编码一个UNICODE 字符可能太多了,但很少会遇到那样的UNICODE字符。 UTF-8转换表表示如下:
UNICODE
bit数
UTF-8
byte数
备注
0000 0000 ~
0000 007F
0~7
0XXX XXXX
1
 
0000 0080 ~
0000 07FF
8~11
110X XXXX
10XX XXXX
2
 
0000 0800 ~
0000 FFFF
12~16
1110XXXX
10XX XXXX
10XX XXXX
3
基本定义范围:0~FFFF
0001 0000 ~
001F FFFF
17~21
1111 0XXX
10XX XXXX
10XX XXXX
10XX XXXX
4
Unicode6.1定义范围:0~10 FFFF
0020 0000 ~
03FF FFFF
22~26
1111 10XX
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
5
 
0400 0000 ~
7FFF FFFF
27~31
1111 110X
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
10XX XXXX
6
 
实际表示ASCII 字符的UNICODE字符,将会编码成1个 字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNICODE 字符转化成UTF-8将需要至少2个 字节。每个 字节由一个 换码序列开始。第一个 字节由唯一的 换码序列,由n位连续的1加一位0组成, 首字节连续的1的个数表示 字符编码所需的字节数。
示例
UNICODE uCA(11001010) 编码成UTF-8将需要2个 字节
uCA -> C3 8A
UNICODE uF03F (11110000 00111111) 编码成UTF-8将需要3个 字节:
u F03F -> EF 80 BF
Unicode 16进制
Unicode 2进制
bit数
UTF-8 2进制
UTF-8 16进制
CA
1100 1010
8
1100 0011 1000 1010
C3 8A
F0 3F
1111 0000 0011 1111
16
11101111 1000 0000 1011 1111
EF 80 BF
由上分析可以看到,UNICODE到UTF-8的转换就是先确定编码所需要的UTF-8编码 字节数,然后用UNICODE编码位从低位到高位依次填入上面表示为x的位上,不足的高位以0补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值