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

 jkjkjd_105 发布于 2022-10-28 14:17
  1. Java向JNI里传一个String="1234567890123";

  2. JNI里用的C语言:const char key_string = (env)->GetStringUTFChars(env, 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_setAES(JNIEnv *env, jobject thiz, jstring input, jstring jkey)
{
        //char *key_string = "1234567890123";
        const char *key_string = (*env)->GetStringUTFChars(env, jkey, 0);
        //(*env)->ReleaseStringUTFChars(env, jkey, key_string);
        
        const char *str = (*env)->GetStringUTFChars(env, input, NULL);    
        (*env)->ReleaseStringUTFChars(env, input, str);
        
        long strLen = ((strlen(str) / 16) * 16) + 16;                
    
        
        char *aesEnc = malloc(strLen);
        memset(aesEnc, 0, strLen);
        AES_set_encrypt_key(key_string, 256, &key);                                    
        for (i = 0; i < strlen(str); i += 16)AES_encrypt(str + i, aesEnc + i, &key);    
    
        char *basEnc = base64_encode(aesEnc, strlen(aesEnc));   
    
        char len[strLen+2];
        sprintf(len,"%d__",strLen);
        char *len_str = str_contact(len,basEnc);
    
        char *result = base64_encode(len_str, strlen(len_str));   
    
        return (*env)->NewStringUTF(env, result);
}

不懂C语言 看不出哪里的问题 在线求教!


3 个回答
  • const char* cppMsg=env->GetStringUTFChars(msg, JNI_FALSE);
    env->ReleaseStringUTFChars(msg, cppMsg);
    
    这是我验证过有效的写法,供参考
    2022-11-12 01:45 回答
  • 分配空间,把你需要的字符串拷贝到key_string。。

    2022-11-12 01:45 回答
  • 乘机推销以下博客:NDK开发 - JNI基本数据和字符串处理

    2022-11-12 01:45 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有