社区
Java SE
帖子详情
JNI中,c中方法如何得到java传来的中文字符串?
gx_sheng
2001-12-19 06:21:18
我试了几种方法都不行。。
能不能写一段源代码,参考参考
...全文
198
12
打赏
收藏
JNI中,c中方法如何得到java传来的中文字符串?
我试了几种方法都不行。。 能不能写一段源代码,参考参考
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zha1977
2002-02-01
打赏
举报
回复
JNIEXPORT void JNICALL Java_MyNative_showParms0
(JNIEnv *env, jobject obj, jstring s, jint i, jboolean b)
{
const char* szStr = (*env)->GetStringUTFChars( env, s, 0 );
wchar_t *UNmessage=new wchar_t[LENGTH];//自己定义一个LENGTH
//这个函数可以将UTF8转成UNICODE码,打印出来就不是乱吗了
int LenOfSM1=MultiByteToWideChar(CP_UTF8,0,szStr,-1,UNmessage,LENGTH);
。。。。。。
}
siuzjh
2002-02-01
打赏
举报
回复
这种错误我也碰到过,是编码问题引起的.
因为JAVA的默认编码是16位的Unicode,如果本地调用的对象使用的是8位的编码方式,那传进去一定是乱码了,反过来也一样.
解决的办法是把二者的编码强制转换成统一的.
如:new String("需转换的目标文本串","GB2312");即把原本是Unicode编码的自符串转换成传
GB2312传递进本地调用的对象中.
gflei
2002-01-08
打赏
举报
回复
我现在可以传过去只是麻烦些:
const jchar* chr;
chr=(*env)->GetStringChars(env, str, NULL);
这样chrvs中存放的是中文字符串,不过不能直接打印
我想拷贝到字符数组中,就可以了,不知你怎么认为?
gx_sheng
2001-12-28
打赏
举报
回复
我是将字符串转化为utf-8编码传过去的。。。
utf-8(还是-7?)是vc中的编码方式
littlefish00
2001-12-28
打赏
举报
回复
用byte[]进行传递。
gflei
2001-12-28
打赏
举报
回复
to; 木头鸟
你是怎么把汉字传过去?我直接传使得java中的一个汉字在c中变成两个字。。
不知你怎么用,还能传过去1个字,能否告诉我?
gx_sheng
2001-12-26
打赏
举报
回复
可不可以在java代码中用UTF-8转换中文字符串,在传给c程序,
我试了一下,但是只能传一个中文字符,后面的字符不见了,怎么回事?
wugng
2001-12-21
打赏
举报
回复
jni.h 文件都在你的<jdk_home>/include 文件夹下
jni_md.h在你的<jdk_home>/include/linux文件夹下
编译的时候要把这两个文件加进去, 在linux下编译的语法为:
gcc -shared -I <jdk_home>/include -I <jdk_home>/include/linux -o mynative.c libmynative.so
即可
在winnt下的jni_md.h在<jdk_home>/include/win32 下
编译时在你的编译器里面也把这两个文件导入即可
hill_boy
2001-12-21
打赏
举报
回复
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class yanzheng */
#ifndef _Included_yanzheng
#define _Included_yanzheng
#ifdef __cplusplus extern "C" {
#endif
/*
* Class: yanzheng
* Method: Verify
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_yanzheng_Verify
(JNIEnv *, jclass, jstring, jstring);
#ifdef __cplusplus
}
#endif
#endif
请问为和编译时在jni.h文件里面出错!!
你的jni.h和jni_md.h文件是哪里来的呢?????
我要在winnt上用的你有吗有的话传给我好吗?谢谢!
zhqfzhjt@21cn.com
gx_sheng
2001-12-20
打赏
举报
回复
agree up
wugng
2001-12-19
打赏
举报
回复
to aprim:
你的程序可以从java中接受到字符串, 但是,不能够接受到中文字符串,
使用中文似乎要用到中文编码, 具体如何我也不很清楚, 希望有高人指点。 关注............
aprim
2001-12-19
打赏
举报
回复
JNIEXPORT void JNICALL Java_MyNative_showParms0
(JNIEnv *, jobject, jstring, jint, jboolean);
/////////////////////////////////////////////////////
#include <stdio.h>
#include "MyNative.h"
JNIEXPORT void JNICALL Java_MyNative_showParms0
(JNIEnv *env, jobject obj, jstring s, jint i, jboolean b)
{
const char* szStr = (*env)->GetStringUTFChars( env, s, 0 );
printf( "String = [%s]\n", szStr );
printf( "int = %d\n", i );
printf( "boolean = %s\n", (b==JNI_TRUE ? "true" : "false") );
(*env)->ReleaseStringUTFChars( env, s, szStr );
}
JNI
学习二:
字符串
参数传递与返回值
jni
编写的一个示例,示例
中
包含一带参数的有返回值的函数。
java
与c交互传递
字符串
和整型
java
中
ndk开发,用
java
调用c,传递参数类型为
字符串
,
字符串
数组,整型数组,需要的朋友可以看一下,也可以给我留言。
使用
JNI
调用本地接口(解决
中
文
字符传递,源码+说明)
通过
JNI
调用本地DLL,并传递
中
文
字符串
,Visual C++ 6.0 开发DLL原创作品,随意转载,提前请说明!
android
jni
中
文
字符传递demo
android
jni
中
文
字符传递demo,实现了C语言与
java
端之间互相传递汉字的功能。例程开发环境为eclipse。详细说明,见相关博客。
使用
JNI
调用本地接口(解决
中
文
问题)
使用
JNI
与本地接口,并传递
中
文
字符串
。
绝对原创,转载请说明!
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章