我想将UTF-16字符串转换为UTF-8。我通过Unicode遇到了ICU库。我在进行转换时遇到问题,因为默认值是UTF-16。 我尝试过使用转换器:
UErrorCode myError = U_ZERO_ERROR;
UConverter *conv = ucnv_open("UTF-8", &myError);
int32_t bytes = ucnv_fromUChars(conv, target, 0, (UChar*)source, numread, &myError);
char *targetLimit = target + reqdLen;
const UChar *sourceLimit = mySrc + numread;
ucnv_fromUnicode(conv,&target, targetLimit, &mySrc, sourceLimit, NULL, TRUE, &myError);
我得到字节为 - (大随机数) 和原始目标位置的垃圾
我缺少什么?
答案 0 :(得分:0)
在指定UErrorCode参数的调用之后检查错误是最佳做法。我会从那里开始。
像...一样的东西。
if (U_FAILURE(status))
{
std::cout << "error: " << status << ":" << u_errorName(status) << std::endl;
}