我正在使用以下代码片段在Linux上转换为UTF 8。请注意,对于我来说,由于编译器标志
,sizeof(wchar_t)= 2void convert(const wchar_t* data, size_t len)
{
ASSERT(sizeof(wchar_t) == sizeof(jchar));
JNIEnv* env = GetEnv();
JString jstr = env->NewString((const jchar *)data, len);
int cbMLen = jStr.GetStringUTFLength();
char* pUTF8Str = new (std::nothrow) char[cbLen + 1];
//IFALLOCFAILED_EXIT(pUTF8String);
strncpy_s(pUTF8Str, cbLen + 1, jStr.GetUTFString(), cbLen);
// release memory...
}
对于某些Unicode字符集,代码在NewString处崩溃。我做错了吗?