Мда.
Сам нашёл, как сделать: почитать документацию... >_<
В C API ICU всё реализовано на колбэках.
Надо установить штатные колбэки UCNV_TO_U_CALLBACK_SUBSTITUTE и UCNV_FROM_U_CALLBACK_SUBSTITUTE с контекстом UCNV_SUB_STOP_ON_ILLEGAL на соответствующие энкодеры.

http://icu-project.org/apiref/icu4c44/ucnv_8h.html#ab1f96fe9de8e2ee39159f748a8d33a4b

ucnv_setToUCallBack(m_converter, UCNV_TO_U_CALLBACK_SUBSTITUTE,
                           UCNV_SUB_STOP_ON_ILLEGAL, 0,
                           0, &err);

И вообще, хороший пример работы с ICU есть здесь:
https://chromium.googlesource.com/experimental/chromium/blink/+/master/Source/wtf/text/TextCodecICU.cpp


--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: http://lists.debian.org/[email protected]

  • ICU Артём Н.
    • Re: ICU Артём Н.

Ответить