JNI中如果使用
jstring jstr = (*env)->NewStringUTF(env,"English");//正常
但是使用
jstring jstr = (*env)->NewStringUTF(env,"中文输出");//有中文报错
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte 0xd0
07-12 11:15:46.967: A/aoc(17953): aliyunos/aoc/vm/jni/java_vm_ext.cc:399] string: '�������'
07-12 11:15:46.967: A/aoc(17953): aliyunos/aoc/vm/jni/java_vm_ext.cc:399] in call to NewStringUTF
07-12 11:15:46.967: A/aoc(17953): aliyunos/aoc/vm/jni/java_vm_ext.cc:399] from java.lang.String com.example.testndkeclipse.JniClient.AddStr(java.lang.String, java.lang.String)
原因是C文件的编码格式要位UTF-8即可支持中文。
这样就可以直接输出中文了。
LOGI("%s","输出拼接之后的新字符串");
NdkDemo代码已上传至Github