我正在尝试写入 logcat unicode 字符(UTF16;宽字符,如日文、韩文或中文)。唯一成功的方法是将其作为字符串发送到 Java(例如下面的代码):
unsigned short* text = new unsigned short[100]; // or jchar*
.... // all some unicode to the array
jstring jtext = jniEnv->NewString(text, (jsize)length);
jniEnv->CallVoidMethod( JavaClass, JavaPrintUnicode, jtext );
... // Clean up
// Then java prints it out
但是如果字节是一个字符数组,__android_log_print
将打印乱码文本。有没有一种方法可以在 NDK (C++) 端打印出文本?
最佳答案
Android NDK,作为典型的 Linux,使用 32 位来表示宽字符,所以如果转换到 UTF-32 是微不足道的,你可以试试这个:
unsigned short text[100];
// fill text with UTF-16; make sure that all characters are 2 bytes long
long utf32[100];
for (int i=0; i<100; i++)
utf32[i] = text[i];
__android_log_print(ANDROID_LOG_INFO, "UTF-32", "%ls", utf32);
关于java - Android ndk log unicode(宽字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464835/