[英]How to get Unicode for Chracter strings(UTF-8) in c or c++ language (Linux)
我正在开发一个应用程序,我需要知道字符的Unicode,将它们分类为汉字,日文字符(汉字,片假名,平假名),拉丁文,希腊文等。
给定的字符串是UTF-8格式。
如果有任何方法可以知道UTF-8字符的Unicode? 例如:
utf-8编码是unicode的可变宽度编码。 每个unicode代码点可以编码为一到四个char
。
要解码char*
字符串并提取单个代码点,您需要读取一个字节。 如果设置了最高有效位,则代码点在多个字符上编码,否则它是unicode代码点。 从最高有效位计数的位数表示用于编码unicode代码点的char
。
此表说明了如何进行转换:
UTF-8 (char*) | Unicode (21 bits)
------------------------------------+--------------------------
0xxxxxxx | 00000000000000000xxxxxxx
------------------------------------+--------------------------
110yyyyy 10xxxxxx | 0000000000000yyyyyxxxxxx
------------------------------------+--------------------------
1110zzzz 10yyyyyy 10xxxxxx | 00000000zzzzyyyyyyxxxxxx
------------------------------------+--------------------------
11110www 10zzzzzz 10yyyyyy 10xxxxxx | 000wwwzzzzzzyyyyyyxxxxxx
基于此,代码编写起来相对简单。 如果您不想编写它,可以使用为您进行转换的库。 Linux下有很多可用的: libiconv , icu , glib ,...
libiconv可以帮助您将utf-8字符串转换为utf-16或utf-32。 如果你真的想支持每个可能的unicode代码点,Utf-32将是最好的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.