JNI中如何把char * 转化为jstring

cdkrrr 2012-08-07 08:43:38

jstring CStr2Jstring( JNIEnv* env, const char* pat )
{
//定义java String类 strClass
jclass strClass = (env)->FindClass("Ljava/lang/String;");
//获取java String类方法String(byte[],String)的构造器,用于将本地byte[]数组转换为一个新String
jmethodID 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("utf-8");
//将byte数组转换为java String,并输出
return (jstring)(env)->NewObject(strClass, ctorID, bytes, encoding);
}



因为我的char *中有中文,但是转换成的jstring是没有中文的,

请教高手我因该如何修改这段代码?谢谢。或者提供一些JNI资料也可以,我第一次接触JNI,还不熟悉。
...全文
587 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyq 2012-08-07
  • 打赏
  • 举报
回复
jstring char* 转换例子

http://qdjinxin.iteye.com/blog/390973
MiceRice 2012-08-07
  • 打赏
  • 举报
回复
常规转换跟楼主的差不多:
http://wp.zcw86.com/?p=206

楼主的问题是指转换后中文丢失了?可以参考下:
http://px.huigutalent.com/faq/427.html
qybao 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:

have a try
Java code
return (env)->NewStringUTF(env, pat); //直接调用NewStringUTF方法


javadoc里有JNI Functions介绍的,LZ自己参考吧


javadoc这个文档哪儿去找?
[/Quote]

就是java文档,官方网就有下载
cdkrrr 2012-08-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

have a try
Java code
return (env)->NewStringUTF(env, pat); //直接调用NewStringUTF方法


javadoc里有JNI Functions介绍的,LZ自己参考吧
[/Quote]

javadoc这个文档哪儿去找?
qybao 2012-08-07
  • 打赏
  • 举报
回复
have a try
return (env)->NewStringUTF(env, pat);  //直接调用NewStringUTF方法 


javadoc里有JNI Functions介绍的,LZ自己参考吧
cdkrrr 2012-08-07
  • 打赏
  • 举报
回复
自己小顶一下!

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧