首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统计UTF-16字符

统计UTF-16字符
EN

Stack Overflow用户
提问于 2020-09-15 02:48:09
回答 2查看 187关注 0票数 2

假设我有一个UTF-16字节数组。如何计算UTF-16字节数组中有多少个字符?数组也可以在边界内。例如,假设有一个4字节的UTF-16字符,并且这4个字节中只有3个被读取到缓冲区中。然后我尝试计算那个3字节的缓冲区。我如何检测没有足够的字节?

EN

回答 2

Stack Overflow用户

发布于 2020-09-15 03:05:34

4字节UTF-16字符称为代理项对,所有代理项对都以0xD800到0xDBFF范围内的代码单元开头。因此,要计算UTF-16字符串中的字符数(也称为代码点),您需要执行以下操作(伪代码):

代码语言:javascript
复制
char_count = 0;
string_pos = 0;

while (!end_of_string)
{
    code_unit = input_string [string_pos];
    ++char_count;
    if (code_unit >= 0xd800 && code_unit <= 0xdbff)
        string_pos += 2;
    else
        ++string_pos;
}

要检测不完整的代理项对,只需在检测到起始值后检查字符串中是否有任何代码单元。您可能还想检查无效的代理项对。

维基百科对UTF-16 here有很好的评价。

票数 3
EN

Stack Overflow用户

发布于 2020-09-15 03:04:30

检查解码器的状态。如果状态是就绪的,那么它就足够了,否则就不够了。当然,您需要维护每个传入代码点的状态。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63890221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档