社区
Java SE
帖子详情
JNI中,c中方法如何得到java传来的中文字符串?
gx_sheng
2001-12-19 06:21:18
我试了几种方法都不行。。
能不能写一段源代码,参考参考
...全文
274
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 );
}
看尚学堂马士兵JSP的视频笔记
session规则:1、如果浏览器支持Cookie,创建session的时候会把sessionID保存在Cookie里2、如果不支持Cookie,必须自己编程使用URL重写的方式实现Session response.encodeURL(); *转码 *URL后面加入SessionId3、Session不象Cookie拥有路径访问的问题 *同一个application下的servlet/jsp可以共
马士兵
JAVA
学习路线图(二) 数据库与web篇
第二部分:数据库篇 数据库: ※可自行找其他数据库教程,推荐mysql,只要会SQL语句和了解数据库的概念(基础)即可进入下一步学习,不需要太深入。 马士兵 oracle数据库视频——官网有资源 JDBC:
java
程序如何访问数据库 尚学堂科技_马士兵_JDBC_MySQL_BBS项目课堂实录视频教程.rar 1_lomboz_eclipse_jdbc/ 此目录下是关于
尚学堂马士兵servlet/JSP笔记(二、servlet)
一、servlet相关的包 tomcat8.0里面的servlet-api.jar在tomcat安装目录下的lib目录下;在写部署在tomcat8.0下的servlet时,要引入该jar包。 二、servlet包介绍 1.所有的servlet必须实现Servlet接口。 2.servlet是可以在任何服务器端运行的小程序,且主要用servlet的service函数。所以写web端的se
尚学堂视频学习顺序
尚学堂全套视频下载:点击-尚学堂视频大全 尚学堂科技_马士兵_JDK5.0下载-安装-配置一周伴 1. 尚学堂科技_马士兵_
JAVA
视频教程_J2SE_5.0_第1章_
JAVA
简介_源代码_及重要说明 尚学堂科技_马士兵_
JAVA
视频教程_J2SE_5.0_第2章_基础语法 尚学堂科技_马士兵_
JAVA
视频教程_J2SE_5.0_第2章_递归补充 尚学堂科技_马士兵_JAV
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章