JAVA & CORBA & JNI & C++中文问题,
JAVA & CORBA & JNI & C++中文问题,
· 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*;
相关文章
- 暂无相关文章
用户点评