社区
Java SE
帖子详情
JNI中,c中方法如何得到java传来的中文字符串?
gx_sheng
2001-12-19 06:21:18
我试了几种方法都不行。。
能不能写一段源代码,参考参考
...全文
207
12
打赏
收藏
JNI中,c中方法如何得到java传来的中文字符串?
我试了几种方法都不行。。 能不能写一段源代码,参考参考
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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/C++之间进行深度集成的项目非常重要。 1. **
JNI
基本概念**
JNI
是
Java
平台提供的一个接口,它使得开发者可以编写本地
方法
...
java
与c交互传递
字符串
和整型
总的来说,
Java
与C的交互是通过
JNI
实现的,其
中
字符串
和整型数据的传递是关键。理解这些基本原理和操作步骤对于进行混合编程至关重要,尤其是在Android应用开发
中
,能够充分利用
Java
和C的优势,优化性能,实现特定的...
使用
JNI
调用本地接口(解决
中
文
字符传递,源码+说明)
最后,`使用
JNI
调用本地接口.doc`可能是详细的步骤文档,而`
Java
UseDll`可能是一个
Java
示例程序,演示如何在
Java
代码
中
调用本地接口并传递
中
文
字符串
。运行这个程序,你可以看到
JNI
成功地处理了
中
文
字符的传递。 ...
android
jni
中
文
字符传递demo
总之,这个"android
jni
中
文
字符传递demo"涵盖了在Android应用
中
使用
JNI
处理
中
文
字符的核心技术,这对于那些需要在
Java
和C/C++之间交换
中
文
数据的开发者来说,是一个非常有价值的参考资料。通过深入学习和实践这个...
使用
JNI
调用本地接口(解决
中
文
问题)
用
JNI
调用本地接口 作 者 : nxy1027@163.com在本文
中
,我们将深入探讨如何使用
JNI
(
Java
Native Interface)来调用本地接口,特别是在处理
中
文
字符串
时遇到的挑战。
JNI
是
Java
平台提供的一种机制,允许
Java
代码与...
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章