您的位置:首页 > 编程语言 > C语言/C++

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*;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: