【发布时间】:2025-12-11 18:35:01
【问题描述】:
我使用此函数is_utf8https://*.com/a/1031773/275677 的略微修改版本从字符数组中提取 UTF8 序列,返回序列和其中的字节数,以便我可以以这种方式迭代字符串。
但是我现在想在字符串 (char *) 上迭代向后。最好的方法是什么?
我的猜测是尝试将字符串的最后四个、三个、两个和一个字节分类为utf8(四次)并选择最长的。
但是,utf8 是否存在歧义?例如,aaaabb 解析为 aaaa.bb 是否也可以被解析(向后)为 aa.aabb,其中 aa、aaaa、bb 和 aabb 是有效的 utf8 序列?
【问题讨论】:
-
对于 Windows,我会使用
MultiByteToWideChar()将字符串转换为 Unicode,然后进行简单的迭代。 -
UTF-8 绝不含糊。这就是 UTF-8 的重点。