JAVA & CORBA & JNI & C++中文问题
2014-12-01 16:49
274 查看
· JAVA(JAVA中字符串采用Unicode(16bit)即UCS-2编码方式,用两个字节表示每个字符,包含了所有字符字形)
(↑) CORBA->JAVA:(JAVA端,用于显示JAVA获取到的CORBA数据)
StringjavaStr = newString(corbaStr.getBytes("ISO-8859-1"));
(↓) JAVA->CORBA:(CORBA端,用于将JAVA端字符串转为可使CORBA传输的字符串)
StringcorbaStr = new String(javaStr.getBytes(),"ISO-8859-1");
· CORBA(两种字符串处理:string类型处理ASCII字符串,wstring类型处理多字符,如中文)
(↑) JAVA->CORBA:(CORBA端,用于将JAVA端字符串转为可使CORBA传输的字符串)
StringcorbaStr = new String(javaStr.getBytes(),"ISO-8859-1");
(↓) CORBA->JAVA:(CORBA端,用于将CORBA字符串转为JAVA字符串,进行JNI调用)
StringjavaStr = newString(corbaStr.getBytes("ISO-8859-1"));
· JNI(字符串采用UTF-8编码方式,即变长的Unicode,ASCII字符一个字节,中文为三个字节)
JNI只做接口封装定义,具体接口实现由C++完成
· C++(ASCII字符一个字节,中文为GB2312编码,两个字节)
(↑) C++->JNI:(C++端,采用字节传送给JNI)
//NewStringUTF方法不能解决中文问题,所以将字符串char *按字节传送给JNI
env->NewByteArray(...);
(↓) JNI->C++:(C++端,将JNI的UTF-8字符串转为GB18030编码)
调用JAVA的String类型的getBytes方法,设置编码方式为GB18030,再将jbyteArray转为C++的char*;
(↑) CORBA->JAVA:(JAVA端,用于显示JAVA获取到的CORBA数据)
StringjavaStr = newString(corbaStr.getBytes("ISO-8859-1"));
(↓) JAVA->CORBA:(CORBA端,用于将JAVA端字符串转为可使CORBA传输的字符串)
StringcorbaStr = new String(javaStr.getBytes(),"ISO-8859-1");
· CORBA(两种字符串处理:string类型处理ASCII字符串,wstring类型处理多字符,如中文)
(↑) JAVA->CORBA:(CORBA端,用于将JAVA端字符串转为可使CORBA传输的字符串)
StringcorbaStr = new String(javaStr.getBytes(),"ISO-8859-1");
(↓) CORBA->JAVA:(CORBA端,用于将CORBA字符串转为JAVA字符串,进行JNI调用)
StringjavaStr = newString(corbaStr.getBytes("ISO-8859-1"));
· JNI(字符串采用UTF-8编码方式,即变长的Unicode,ASCII字符一个字节,中文为三个字节)
JNI只做接口封装定义,具体接口实现由C++完成
· C++(ASCII字符一个字节,中文为GB2312编码,两个字节)
(↑) C++->JNI:(C++端,采用字节传送给JNI)
//NewStringUTF方法不能解决中文问题,所以将字符串char *按字节传送给JNI
env->NewByteArray(...);
(↓) JNI->C++:(C++端,将JNI的UTF-8字符串转为GB18030编码)
调用JAVA的String类型的getBytes方法,设置编码方式为GB18030,再将jbyteArray转为C++的char*;
相关文章推荐
- Java&CORBA编程实例
- Java&CORBA编程实例2
- 关于JAVA中JNI的应用 <转>
- Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
- Java查看注册表错误:ERROR You have not installed the DLL named 'ICE_JNIRegistry.DLL'
- Android C 直接調用JNI ->JAVA
- Cocos2d-x初入学堂(16)-->C++通过JNI和Java的数据相互
- Could not load 'clearsilver-jni' java.library.path = out/host/linux-x86/lib make:
- JNI——java & c/c++ 相互通信及调用
- Java&CORBA编程实例2
- JNI 之二 :java & c/c++ 相互通信及调用
- eclipse错误:led to load the jni shared library"/usr/local/java/jdk1.6.0_21/bin/../jre/lib/i386/client/libjvm.so
- JAVA&CORBA详解
- 【java&&jni】jni入门篇
- Java&CORBA编程实例
- JAVA&CORBA详解
- 【java&&jni】jni入门篇
- JNI 之二 :java & c/c++ 相互通信及调用
- eclipse Fail to load the JNI share library"C:\Java\jdk1.7.0\bin\..\jre\bin\client\jvm.dll
- Java applet & native method (JNI) -- Snippets