欢迎来到天天文库
浏览记录
ID:31707923
大小:65.81 KB
页数:6页
时间:2019-01-17
《jni中的汉字问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Jni中的汉字问题!!!急!!!!!!!!!!!!!!!!!!!!!楼主soyol()2003-04-0914:09:55在Java/J2SE/基础类提问//JniSample.javapublicclassJniSample{〃声明所需原牛•函数:privatenativevoidShowMessage(Stringmsg);static{//linuxb'装载动态库:System.load(,7usr/lib/Msg.soH);}〃用main函数测试:publicstaticvoidmain(String[Jargs){JniSample
2、app=newJniSample();app.ShowMessage(nGeneratedwithJNI111文字符”);//JniSample.c#include#include#includeHJniSample.hMJNIEXPORTvoidJNICALLJava_JniSample_ShowMessage(JNIEnv*env,jobjectjObjJstringjMsg){char*msg=(*env)->GetStringUTFChars(envjMsg,O);printf(HTestJNI中文信息
3、:%sH,msg);(*env)->ReleaseStringUTFChars(envjMsg,msg);}在linux下编译好,运行后结果为:TestJNI中文信息:GeneratedwithJNI+乱码哪位高手能帮个忙,多谢!!!!!问题点数:100、回复次数:8Top1楼jczjczjcz(Golden)回复于2003-04-0914:52:38得分20给你一个转换类publicclassCharsetProcess{publiciCharsetProcess(){/publicstaticvoidmain(String[]args
4、){publicstaticStringU2C(Strings)Stringstr=s;tryfiif(str==null)returnstr;byte[]u=str.getBytesC'iso-8859-r');}returnnewString(u,uGB2312M);catch(java.io.UnsupportedEncodingExceptione)e.printStackTrace();returnstr;}1Top2楼dyroro(粗线条)回复于2003-04-0915:00:36得分20不要使用String传递进去,转换成byt
5、e[],然后就很好处理J-Top3楼soyol()回复于2003-04-0915:20:37得分0谢谢!正在试Top4楼zhaoao5958(不会游泳的鱼)回复于2003-04-0915:33:52得分20好了吗?Top5楼soyol()回复于2003-04-0915:58:00得分0这种方法是可行的!明天结帐!可以说一说原因,或是还有其他方法吗?我在自制的文本框中滚动时,每次光标必须动两格,否则又乱了我的中文平台是zhconTop6楼cooleyes(眼睛)回复于2003-04-0921:10:23得分20不用转成Byte的直接传,用两个辅
6、助函数就行了/**关于下面两个辅助函数:以前我是直接使用JNI的API函数env->GetStringUTF()(好像是这个名字,我有点忘了)和env->NewStringUTF()的。但是这两个函数对本地的GB2312(GBK)编码有问题,也就是说中文会有问题。因为Java是采用Unicode作为字符串编码的。在JNI中只有四个函数GetStringUTF,NewStringUTEGetStringChars,NewString,前两个使用UTF8(可变字节),后两个是使用Unicode字符(16位双字节),而本地的C程序时使用GB2312
7、或者GBK编码的,这样就会产生编码错误,导致乱码。所以采用WideCharToMultiByte和MultiByteToWideChar这两个函数把本地的GB2312和GBK码换成Unicode16编码,再使用Jni函数来转化成JavaString.*/IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIH〃辅助函数:char*jstringToWindows(JNIEnv*envjstringjstr);〃功能:将Java的Unicode字符串转化成本地字符数组;/////////////////////
8、//////////////////////////////////////////////////////////char*jstringToWindows(JN
此文档下载收益归作者所有