社区
Linux/Unix社区
帖子详情
linux下JNI给JAVA传递中文的问题
dic_walter
2007-07-18 05:46:31
我在JNI里面想传递一中文字符串给JAVA,但JAVA里面显示出来是乱码。这个问题在windows下面很好处理。但liunx下如何处理呢,急盼答案!!!!!
...全文
498
23
打赏
收藏
linux下JNI给JAVA传递中文的问题
我在JNI里面想传递一中文字符串给JAVA,但JAVA里面显示出来是乱码。这个问题在windows下面很好处理。但liunx下如何处理呢,急盼答案!!!!!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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)
keil5 mdk/c51/c251安装教程
若出现如图注册机软件打不开、报错,是因为电脑自带的杀毒软件识别为病毒自动删除了,解决方案如下,若能打开注册机软件请跳过。keil5三个版本 C51/MDK/C251下载安装方式相同,本文以mdk版本为例介绍。安装好后桌面出现图标,我有三个版本分别进行了重命名,若只安装一个版本可以暂不修改。打开Windows安全中心,打开保护历史记录,找到我们的文件点击还原。下载:推荐keil5官方下载网站有各种版本,下载速度还可以。将复制好的CID粘贴,MDK版本选择ARM。选择一个方便找到的安装路径,自己命名。
Keil5官方安装与双架构配置完全指南
Keil5是嵌入式开发中关键的集成开发环境(IDE),支撑C51单片机与ARM Cortex-M系列芯片的编译、调试与烧录。其核心原理基于多架构工具链注册与设备数据库动态加载,技术价值在于实现裸机程序开发、HAL库编译及跨平台协同调试。典型应用场景包括毕业设计、智能硬件原型开发与工业级产品固件迭代。然而版本混乱、下载源不可靠、C51与MDK共存冲突、授权失效等
问题
长期困扰开发者。本文聚焦Keil5官方安装路径、C51 V960与MDK5.29兼容组合、目录隔离式双架构部署及Arm License Serve
Keil MDK-ARM官方下载与多平台集成安装指南
本文提供Keil MDK-ARM官方下载与多平台集成安装指南,详细讲解如何从官网获取MDK-ARM开发套件,并正确配置ARM Compiler5和ARM Compiler6版本。涵盖Core目录共享、多平台兼容性设置及常见
问题
排查,帮助嵌入式开发者高效搭建ARM开发环境。
Keil5 C51与MDK-ARM多平台共存安装实战指南
嵌入式开发中,跨架构工具链共存是常见工程需求。Keil µVision5 作为经典IDE,支持8051(C51)与ARM Cortex-M(MDK)双编译器并行运行,其本质依赖注册表配置、环境变量隔离与工程元数据驱动的编译器自动识别机制。该方案规避非法破解风险,确保编译器行为可信、调试器兼容、输出文件可追溯,技术价值体现在量产级稳定性与审计合规性。典型应用场景包括遗留8051产品维护与STM32新平台协同开发、统一CI/CD流水线构建,以及多核异构固件同步迭代。本文聚焦Windows平台下经产线验证的Kei
Keil5安装详解:C51与MDK共存、芯片包与许可证避坑指南
嵌入式开发的第一步往往是搭建可靠的编译工具链,而Keil5常让初学者误以为它是一个统一软件。实际上,面向8051单片机的C51与面向Arm内核的MDK是两套独立工具链,共用uVision5界面。理解这一概念后,才能避免下载“全版本合集”带来的安全风险和版本错配
问题
。本文从原理出发,讲解如何在同一目录下共存安装C51与MDK,并通过芯片支持包(DFP)扩展STM32等设备支持,同时厘清评估版许可限制与正版授权边界。无论是51单片机课程设计,还是STM32项目开发,这套流程都能帮助开发者快速搭建稳定环境,避开常
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章