Dav*_*Guo 8 java-native-interface android
在jni中,我想使用以下方法将char*转换为jstring:
env->NewStringUTF(chm_pcText)
Run Code Online (Sandbox Code Playgroud)
它适用于英文文本,但中文失败,并获得以下信息:
JNI WARNING: illegal continuation byte.
Run Code Online (Sandbox Code Playgroud)
怎么解决?
Dav*_*Guo 18
我只是解决它:两步,第一步:将char*转换为jbyteArray,然后调用java String的构造函数生成一个jstring.
strClass = global_env->FindClass("java/lang/String");
ctorID = global_env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
encoding = global_env->NewStringUTF("GBK");
jbyteArray bytes = global_env->NewByteArray(strlen(chm_pcText));
global_env->SetByteArrayRegion(bytes, 0, strlen(chm_pcText), (jbyte*)chm_pcText);
jstring str = (jstring)global_env->NewObject(strClass, ctorID, bytes, encoding);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10217 次 |
| 最近记录: |