如何检测ICU中的一个编码是否支持unicode char?

时间:2014-03-17 06:03:27

标签: c++ unicode encoding icu

我需要检测使用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返回的数量通常只有一个。所以我开始怀疑是否有更好或更稳定的方法。

1 个答案:

答案 0 :(得分:0)

ucnv_getUnicodeSet()告诉您此转换器支持哪些代码点。您可以使用USet API(或C ++中的UnicodeSet)来操纵,交互,联合等这些集合。