utf-8编码是unicode的可变宽度编码。每个unicode码点可以被编码为一到四个char
。
要解码char*
字符串并提取单个代码点,请读取一个字节。如果设置了最高有效位,则代码点被编码为多个字符,否则为unicode代码点。从最高有效位开始计数的设置位数表示使用多少char
来编码unicode码点。
下表说明了如何进行转换:
UTF-8 (char*) | Unicode (21 bits)
------------------------------------+--------------------------
0xxxxxxx | 00000000000000000xxxxxxx
------------------------------------+--------------------------
110yyyyy 10xxxxxx | 0000000000000yyyyyxxxxxx
------------------------------------+--------------------------
1110zzzz 10yyyyyy 10xxxxxx | 00000000zzzzyyyyyyxxxxxx
------------------------------------+--------------------------
11110www 10zzzzzz 10yyyyyy 10xxxxxx | 000wwwzzzzzzyyyyyyxxxxxx
Run Code Online (Sandbox Code Playgroud)
基于此,该代码相对容易编写。如果您不想编写它,则可以使用为您进行转换的库。Linux下有很多可用的软件:libiconv,icu,glib,...
归档时间: |
|
查看次数: |
2651 次 |
最近记录: |