造成java显示中文乱码。
解决方法:
jstring stoJstring( JNIEnv* env, const char* pat )
{
jclass strClass = (*env)->FindClass(env,"java/lang/String");
jmethodID ctorID = (*env)->GetMethodID( env, strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = (*env)->NewByteArray(env,strlen(pat));
(env)->SetByteArrayRegion(env,bytes, 0, strlen(pat), (jbyte)pat);
jstring encoding = (*env)->NewStringUTF(env,"GB2312");
return (jstring)(*env)->NewObject(env,strClass, ctorID, bytes, encoding);
}
转换gb2312格式的字符串为UTF-8的字符串。
本文详细介绍了如何在JNI调用中,将C代码层使用的gb2312编码的字符串,正确转换为Java能够识别并正常显示的UTF-8编码字符串,避免了中文乱码的问题。通过使用Java反射API,实现了从原始gb2312编码的字符数组到Java String对象的高效转换。

617

被折叠的 条评论
为什么被折叠?



