gpt4 book ai didi

java - Android ndk log unicode(宽字符)

转载 作者:行者123 更新时间:2023-11-30 02:42:04 24 4
gpt4 key购买 nike

我正在尝试写入 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com