关于JNI的中文问题(急急急急急)

zzhangwa 2002-07-04 07:58:52
请问各位大侠,关于将在JAVA文件中中文字符传递给C语言,如何设计JAVA和C两端的程序才能使在C中能识别该中文字符.
如果有源程序可以发到我的信箱zzhangwa@hotmail.com
...全文
64 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
z3h 2002-07-08
  • 打赏
  • 举报
回复
在Jni.h中有Java String 到C char[] 的转换方法。也有从C 中返回参数的方法 C中不时return char*就可以的。要用jni.h中提供的方法!
leonzhao 2002-07-08
  • 打赏
  • 举报
回复
再补充一句,fileName变量用char *转换类型就可以了。

(char *)fileName
daehappy 2002-07-07
  • 打赏
  • 举报
回复
up!gz!
leonzhao 2002-07-06
  • 打赏
  • 举报
回复
这是Java端传递参数的方法:
public native void jniClassify(byte [] fileName);
leonzhao 2002-07-06
  • 打赏
  • 举报
回复
不能给你完整的源代码。看这些片断吧:

JNIEXPORT void JNICALL Java_CtgDll_jniClassify
(JNIEnv *env, jobject obj, jbyteArray jarrayFileName)
{
jsize len;
len = env->GetArrayLength(jarrayFileName);
jbyte *fileName;
fileName = (jbyte *) malloc(sizeof(jbyte)*(len+1));
if ( fileName!= NULL) {
env->GetByteArrayRegion(jarrayFileName, 0, len, fileName);
fileName[len] = '\0';
cout << "fileName: " << fileName << endl;
}

那么现在你可以直接用fileName了。
zzhangwa 2002-07-05
  • 打赏
  • 举报
回复
楼上的两位
有没有具体的源码,谢谢发到我的信箱中,得到就结贴
woowindice 2002-07-04
  • 打赏
  • 举报
回复
是的,要将String先.getBytes(String encoding)转成byte[]数组,c然后根据得到的byte[]数组在构造回来。
leonzhao 2002-07-04
  • 打赏
  • 举报
回复
JNI的中文支持是0,你必须将String转称byte[]再转回来。没有捷径……

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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