如何将可变长度的UTF-8编码字节解码/转换为unicode字符?
答案 0 :(得分:2)
值高于127
(二进制01111111
,7f
十六进制)的每个字节都是多字节字符的一部分。
因此,如果第一位为0,则完成 - 单字节字符。 如果不是,这是一个延续字节 - 字节中的位也决定了该字符中有多少字节(技术上最多可以有6个字节的字符,但UTF-8仅定义为1-4字节字符)。
有关历史记录和更详细的说明,请参阅我们的无畏领袖的文章;)The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)或this wikipedia article on UTF-8(有关有效/无效字节组合的更多技术细节)
答案 1 :(得分:1)
我认为这是here
答案 2 :(得分:0)
UTF-8 是 Unicode,因此没有翻译。如果您的意思是“当我显示Unicode字符串时,如何在屏幕上看到非ASCII字符”,则需要确保安装了支持Unicode的字体。在使用中。
我公司正在使用this字体。
答案 3 :(得分:0)
编码/解码UTF-8的算法在RFC 3629中描述。
下表(32位)Unicode代码点到字节序列的范围来自该文档:
Char. number range | UTF-8 octet sequence
(hexadecimal) | (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx