我需要检测使用ICU的特定编码是否支持unicode charactere。一些代码段:
ucnv_fromUnicode(conv, &targetIndex, targetLimit,
&source, source + sourceLen, nullptr, flush, &err);
int8_t len = 10;
std::vector<UChar> uchars;
uchars.resize(len);
UErrorCode err = U_ZERO_ERROR;
ucnv_getInvalidUChars(conv, uchars.data(), &len, &err);
if (len != 0) {
TRACE("unmapable codepoint");
} else {
TRACE("all green");
}
我的问题,这是检查的标准方法还是有更好的方法?
我发现无效uchars的数量可能小于真实的uchars,len返回的数量通常只有一个。所以我开始怀疑是否有更好或更稳定的方法。
答案 0 :(得分:0)
ucnv_getUnicodeSet()
告诉您此转换器支持哪些代码点。您可以使用USet
API(或C ++中的UnicodeSet
)来操纵,交互,联合等这些集合。