如何将JNI中将 char* 字符串转换成 jstring? 这个问题困扰了我好久,也用不同的方法进行调试过,都没有成功。
今天无意中调试成功了下面的代码,可以方便的将char*转换成jstring。
1. jstring CharTojstring(JNIEnv* env, char* str)
2. {
3. jsize len = strlen(str);
4.
5. jclass clsstring = (*env)->FindClass(env, "java/lang/String");
6. jstring strencode = (*env)->NewStringUTF(env,"GB2312");
7.
8. jmethodID mid = (*env)->GetMethodID(env,clsstring, "<init>", "([BLjava/lang/String;)V");
9. jbyteArray barr = (*env)-> NewByteArray(env,len);
10.
11. (*env)-> SetByteArrayRegion(env,barr,0,len,(jbyte*)str);
12. return (jstring)(*env)-> NewObject(env,clsstring,mid,barr,strencode);
13. }
上面的代码我调试通过的。