JNI中jstring 与 const char* 的转换
来源:互联网 发布:哪个网络播放器最好用 编辑:程序博客网 时间:2024/05/21 10:47
在不同编码环境的时候,经常会遇到出现乱码的情况,我们需要自己转换下:
//将const char类型转换成jstring类型jstring CStr2Jstring( JNIEnv* env, const char* pat ){//定义Java String类 strClassjclass strClass = (env)->FindClass("Ljava/lang/String;");//获取Java String类方法String(byte[],String)的构造器,用于将本地byte[]数组转换为一个新StringjmethodID ctorID = (env)->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");//建立byte数组jbyteArray bytes = (env)->NewByteArray((jsize)strlen(pat));//将char* 转换为byte数组(env)->SetByteArrayRegion(bytes, 0, (jsize)strlen(pat), (jbyte*)pat);//设置String, 保存语言类型,用于byte数组转换至String时的参数jstring encoding = (env)->NewStringUTF("GB2312"); //将byte数组转换为java String,并输出return (jstring)(env)->NewObject(strClass, ctorID, bytes, encoding);}char* Jstring2CStr(JNIEnv* env, jstring jstr) { char* rtn = NULL; jclass clsstring = env->FindClass("java/lang/String"); jstring strencode = env->NewStringUTF("GB2312"); jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B"); jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr,mid,strencode); jsize alen = env->GetArrayLength(barr); jbyte* ba = env->GetByteArrayElements(barr,JNI_FALSE); if(alen > 0) { rtn = (char*)malloc(alen+1); //new char[alen+1]; memcpy(rtn,ba,alen); rtn[alen]=0; } env->ReleaseByteArrayElements(barr,ba,0); return rtn;2.使用JNI默认的转换函数实现const char *dname=NULL;dname = env->GetStringUTFChars(devName, 0)其中devName是Jstring类型。
0 0
- JNI中jstring 与 const char* 的转换
- JNI中jstring 与 const char* 相互转换函数
- JNI中jstring 与 const char* 相互转换函数
- JNI中很有用的jstring 与 const char* 的相互转换函数
- JNI中很有用的jstring 与 const char* 的相互转换函数
- JNI中很有用的jstring 与 const char* 的相互转换函数
- JNI中很有用的jstring 与 const char* 的相互转换函数
- jni中jstring与char*转换的乱码问题
- JNI中jstring 、const char* 、string相互转换函数
- JNI 入门介绍(jstring与char*的转换)
- JNI 入门介绍(jstring与char*的转换)
- JNI 入门介绍(jstring与char*的转换)
- JNI 入门介绍(jstring与char*的转换)
- JNI中jstring 和char* 之间的转换方法
- JNI中jstring 和char* 之间的转换方法
- JNI中jstring 和char* 之间的转换方法
- JNI数据类型转换: jstring与char*
- jstring与const char* 相互转换
- SpringMVC 上传图片保存到服务器 同时更改图片名称保存至数据库
- JVM内存结构
- Python基础--dict
- 读书笔记:Tutorial of React.JS
- 保护果实 【 数学几何】+【贪心】
- JNI中jstring 与 const char* 的转换
- Three.js进阶篇之5
- strchr函数
- 递归的函数
- LeetCode 537. Complex Number Multiplication
- 【Linux】Linux下的find命令
- Hibernate用户手册:2.1 领域模型以及映射类型
- 汉诺塔系列1
- LeetCode-3. Longest Substring Without Repeating Characters