给定第一个字节(多字节字符)和charset规范名称,如何确定字符的字节长度?
最好使用ICU库。
答案 0 :(得分:2)
使用 ICU 库中的 ucnv_getNextUChar 。 以下代码将二进制流拆分为字符并打印每个字符的大小:
const char * utf8_strings[] = {"Samotność - cóż po ludziach, czym śpiewak dla ludzi"};
icu::ErrorCode err;
UConverter* conv = ucnv_open("UTF-8", err);
size_t len = strlen(utf8_strings[0]);
const char* curr = utf8_strings[0];
do {
const char* prev = curr;
ucnv_getNextUChar(conv, &curr, curr+len, err);
std::cout << prev[0] << " " << curr - prev << std::endl;
} while (curr < utf8_strings[0]+len);
答案 1 :(得分:1)
由于大多数原因,在设计字符集时,始终有一种方法可以通过第一个字符确定字符的字节长度。所以只说:
of 0xxx xxxx
110x xxxx
10xx xxxx
1110 xxxx
10xx xxxx
10xx xxxx