社区
Linux/Unix社区
帖子详情
linux下JNI给JAVA传递中文的问题
dic_walter
2007-07-18 05:46:31
我在JNI里面想传递一中文字符串给JAVA,但JAVA里面显示出来是乱码。这个问题在windows下面很好处理。但liunx下如何处理呢,急盼答案!!!!!
...全文
431
23
打赏
收藏
linux下JNI给JAVA传递中文的问题
我在JNI里面想传递一中文字符串给JAVA,但JAVA里面显示出来是乱码。这个问题在windows下面很好处理。但liunx下如何处理呢,急盼答案!!!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dic_walter
2007-09-05
打赏
举报
回复
lovejklife
----------------------
分全部都给你了!!!
wangfengyun521
2007-08-10
打赏
举报
回复
这么好的帖子,顶了!!!
有奖活动,送银饰了~``大家快来看
斑马网软件论坛做活动送银饰啊。不要钱滴。。大家看去,,我已经准备好去抢。。
活动地址:http://club.banma.com/viewthread.php?tid=32496
dic_walter
2007-08-10
打赏
举报
回复
lovejklife
----------------------
好,没问题。我再想想
lovejklife
2007-08-01
打赏
举报
回复
没有其他人讨论了吗,真的没有其他的方法了吗?
再没人来,你就把分全给我吧,呵呵
dic_walter
2007-07-26
打赏
举报
回复
lovejklife(程序员怎么样才能发财呢??)
-----------------------------------------
非常感谢,我用你的方法成功了。哈哈
我再看看还有没有其它的方法,如果有,在这里发布一下
也请各位再提供一些其它的思路,非常感激
lovejklife
2007-07-26
打赏
举报
回复
jclass m_strClass = (m_env)->FindClass("java/lang/String");
dic_walter
2007-07-25
打赏
举报
回复
wjwaterstone()
------------------------
我试过你给我的方法,但中间有些汉字显示正确,有些显示的是乱码。
dic_walter
2007-07-25
打赏
举报
回复
lovejklife(程序员怎么样才能发财呢??)
--------------------------------------------
请问m_strClass是个什么东东?
java小小兵
2007-07-25
打赏
举报
回复
介个就奇怪唠
难道说传入的String编码不一致?
java小小兵
2007-07-24
打赏
举报
回复
public String convert(String s){
try{
return new String(s.getBytes("ISO-8859-1"),"GB2312");
}catch(Exception e){return null;}
}
试试这个
dic_walter
2007-07-23
打赏
举报
回复
mbstowcs( (wchar_t*)buf, buffer, len )的返回值总是1么?
lovejklife
2007-07-23
打赏
举报
回复
我用的方法是java.lang.string类的构造函数来建立JAVA的string类型
------------------------------
//获取java String类方法String(byte[],String)的构造器,用于将本地byte[]数组转换为一个新String
m_strConstructorID = (m_env)->GetMethodID(m_strClass, "<init>", "([BLjava/lang/String;)V");
m_encoding = (m_env)->NewStringUTF("GB2312");
jbyteArray bytes = (m_env)->NewByteArray(strlen(str));//建立byte数组
(m_env)->SetByteArrayRegion(bytes, 0, strlen(str), (jbyte*)str);//将char* 转换为byte数组
return (jstring)(m_env)->NewObject(m_strClass, m_strConstructorID, bytes, m_encoding);//将byte数组转换为java String,并输出
-----------------------------
不知道还有什么好方法
记得告诉我
dic_walter
2007-07-20
打赏
举报
回复
mbstowcs好象办转换了第一个汉字出来?????????
dic_walter
2007-07-20
打赏
举报
回复
自己顶
dic_xiphias
2007-07-20
打赏
举报
回复
帮顶
dic_walter
2007-07-19
打赏
举报
回复
我用过setlocale( "zh_CN.GB2312" ),也是一样的效果
hzcpig
2007-07-19
打赏
举报
回复
setlocale( "zh_CN.GB2312" );
dic_walter
2007-07-19
打赏
举报
回复
JNIEXPORT jstring JNICALL Java_myPackage_myInterface_getErrString
(JNIEnv *env, jclass obj)
{
setlocale( "zh_CN.gbk" );
jstring jstr;
char buffer[256];
GetErrorString( buffer );
strcpy( buffer, "你他是不是" );
//jstr = Char2Jstring( env, buffer );
unsigned short* buf = 0;
int len = MB_CUR_MAX;//mbstowcs( NULL, buffer, strlen( buffer) );
buf = ( unsigned short* )malloc( len*2 + 1 );
if( mbstowcs( (wchar_t*)buf, buffer, len ) > 0 )
jstr = (*env)->NewString( env, (jchar*)buf, len );
if( buf )
free( buf );
return jstr;
}
又努力一把,做出以上代码。
但只显示第一个汉字,真不得了了。晕掉,快来救我啊!!!!
dic_walter
2007-07-19
打赏
举报
回复
哦,补充一下,我要传递的是中文字符
dic_walter
2007-07-19
打赏
举报
回复
/*取得错误信息*/
JNIEXPORT jstring JNICALL Java_SafePackage_common_getErrString
(JNIEnv *env, jclass obj)
{
jstring jstr;
char buffer[256];
GetErrorString( buffer );
jstr = Char2Jstring( env, buffer );
return jstr;
}
这是我的代码,返回类型是jstring
现在的问题返回后,JAVA得到的字符串是乱码的。
现在要做的是Char2Jstring中,如何将char*的转换成jstring类型的才不会出现乱码
加载更多回复(3)
Java
JNI
调用动态库(
Linux
、Windows)的实现步骤
Java
JNI
调用动态库(
Linux
、Windows)的实现步骤
如何利用
JNI
实现
Java
插件开发
本文主要工作在于利用
JNI
实现对已经完成的视频镜头提取C++程序的调用。 整个过程如下所示: (1)将视频特征提取算法建立相应的windows下的Dll和
Linux
下的So(这个两个文件大家都知是什么了吧) (2)利用
jni
调用这些dll。但是有一个
问题
,就是这里的所有库文件需要打到jar包中,因此需要将这些文件先解压到一个临时文件夹中,然后通过Syste.load加载这些库文件。
Java
再说
JNI
之实例
NULL 博文链接:https://zhaoningbo.iteye.com/blog/1098817
java
传递
数据到C(
JNI
)
JNI
传递
数据
C++库封装
JNI
接口-实现
java
调用c++
C++库封装
JNI
接口-实现
java
调用c++
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章