新手求教JNI里的jstring转char问题

  1. Java向JNI里传一个String=”1234567890123″;

  2. JNI里用的C语言:const char key_string = env->GetStringUTFCharsenv, jkey, 0;

    **error:****JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte 0x38**;
    

在JNI里直接定义 char *key_string = “1234567890123”;就没问题

全部代码如下,网上找的,用来加密的;

jstring Java_com_itapp_mylibrary_MyLibrary_setAESJNIEnv *env, jobject thiz, jstring input, jstring jkey
{ //char *key_string = "1234567890123"; const char *key_string = *env->GetStringUTFCharsenv, jkey, 0; //*env->ReleaseStringUTFCharsenv, jkey, key_string; const char *str = *env->GetStringUTFCharsenv, input, NULL; *env->ReleaseStringUTFCharsenv, input, str; long strLen = strlenstr / 16 * 16 + 16; char *aesEnc = mallocstrLen; memsetaesEnc, 0, strLen; AES_set_encrypt_keykey_string, 256, &key; for i = 0; i < strlenstr; i += 16AES_encryptstr + i, aesEnc + i, &key; char *basEnc = base64_encodeaesEnc, strlenaesEnc; char len[strLen+2]; sprintflen,"%d__",strLen; char *len_str = str_contactlen,basEnc; char *result = base64_encodelen_str, strlenlen_str; return *env->NewStringUTFenv, result;
} 不懂C语言 看不出哪里的问题 在线求教! 

乘机推销以下博客:NDK开发 – JNI基本数据和字符串处理

分配空间,把你需要的字符串拷贝到key_string。。

const char* cppMsg=env->GetStringUTFCharsmsg, JNI_FALSE;
env->ReleaseStringUTFCharsmsg, cppMsg; 这是我验证过有效的写法,供参考

发表评论

电子邮件地址不会被公开。 必填项已用*标注