JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte 0x12
2017-01-07 14:30
2071 查看
正在学习JNI开发,当使用JNI传参时,发现,会抛出input is not valid Modified UTF-8: illegal continuation byte 0x12的异常,根据异常内容,我们可以猜得出个大概,是因为我们传入的数据不是UTF-8的或者是说,我们在c文件里面返回数据的时候,数据格式被强制指定为UTF-8格式的。
那我们怎么解决这个问题呢?
想要解决这个问题,那我们就得把jstring转化成c/c++字符串。在Java JNI里面有提供这样的转换方法,调用GetStringUTFChars就可以转换成功了,当然在调用之后,需要去检查返回的字符串是否为空,因为调用该函数有内存分配操作,失败后,该函数返回NULL,并且抛出OutOfMemoryError异常。调用ReleaseStringUTFChars可以释放GetStringUTFChars中分配的内存。
转换原理讲完了,那么久看看转换过程代码吧。
OK了,试试吧。
那我们怎么解决这个问题呢?
想要解决这个问题,那我们就得把jstring转化成c/c++字符串。在Java JNI里面有提供这样的转换方法,调用GetStringUTFChars就可以转换成功了,当然在调用之后,需要去检查返回的字符串是否为空,因为调用该函数有内存分配操作,失败后,该函数返回NULL,并且抛出OutOfMemoryError异常。调用ReleaseStringUTFChars可以释放GetStringUTFChars中分配的内存。
转换原理讲完了,那么久看看转换过程代码吧。
char buf[126]; const jbyte *str; str=(*env)->GetStringUTFChars(env,jstr,NULL); if(str==NULL){ return NULL; } (*env)->ReleaseStringUTFChars(env,jstr,str);
OK了,试试吧。
相关文章推荐
- JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte 0x3f
- crash - JNI WARNING: input is not valid modified utf-8: illegal continuation byte
- jni 中使用NewStringUTF时报错:input is not valid Modified UTF-8: illegal start byte 0xa0(十六进制未定义字符)
- jni 中使用NewStringUTF时报错:input is not valid Modified UTF-8: illegal start byte 0xa0
- JNI WARNING: NewStringUTF input is not valid Modified UTF-8: illegal start byte 0xb0
- JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xfe
- input is not valid Modified UTF-8: illegal start byte 0x**
- JNI WARNING: NewStringUTF input is not valid Modified UTF-8: illegal start byte 0xf5
- newStringUTF出现input is not valid Modified UTF-8错误解决办法
- ByteBuffer.allocate()/ByteBuffer.allocateDirect()/JNI DETECTED ERROR IN APPLICATION: jarray was NULL
- Android之JNI DETECTED ERROR IN APPLICATION: illegal class name 'XXX'的错误解决方法
- cocos2dx JNI DETECTED ERROR IN APPLICATION: illegal class name 'XXX'的错误修复
- 关于调用listFile()在遍历含有乱码文件时出现input is not valid Modified UTF-8错误的解决方法
- JNI WARNING: input is not valid Modified UTF-8
- Unity Android 5.0上 JNI DETECTED ERROR IN APPLICATION: jclass is an invalid local reference
- JNI DETECTED ERROR IN APPLICATION解决记录
- Sharepoint Error : The URL "filename" is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web
- JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodV called with pending exception '
- Android Error - JNI DETECTED ERROR IN APPLICATION
- JNI DETECTED ERROR IN APPLICATION: can't call void XXX on instance of java.lang.Class <XXX>解决方案