【发布时间】:2016-06-25 17:14:07
【问题描述】:
我正在尝试返回用 UTF-8 编码的 jstring,但应用程序崩溃并且 JNI 写出错误:
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte 0x30
我的sn-p:
jstring Java_tgio_rncryptor_RNCryptorNative_generateKey(JNIEnv *env, jobject instance, const jstring salt_, const jstring password_)
{
const char *salt = env->GetStringUTFChars(salt_, 0);
const char *password = env->GetStringUTFChars(password_, 0);
RNCryptor *cryptor = new RNCryptor();
string value = (char * )cryptor->generateKey(salt, password).data();
delete cryptor;
env->ReleaseStringUTFChars(salt_, salt);
env->ReleaseStringUTFChars(password_, password);
return env->NewStringUTF(value.c_str());
}
也试过了:
const char *returning = env->GetStringUTFChars(env->NewStringUTF(value.c_str()), 0);
return env->NewStringUTF(returning);
有什么建议吗?
【问题讨论】:
标签: java android encoding utf-8 java-native-interface