c++与java中文互转_java与C++中文字符的问题

中文的编码常用的有3种格式:1)gb2312(就是ascii码方式,也说ansi) 2)unicode 3)utf-8

c++一般采用ancii码,而java一般采用unicode,而SymbianC++(以后简称symbian)采用unicode或utf-8

比如汉字“好”: unicode为“7D 59”,而ascii为“BA C3”, utf-8编码为3个字节。

终端你可以选择使用char *, unsigned char *, 但是这不是推荐使用的,很多时候处理的时候如界面等需要转化为终端的字符编码格式。

现在分4部分讲解字符编码转化(例子假设,java和symbian间采用utf-8,c++和symbian之间采用ASCII码):

1) Symbian -> Java 发送含有中文的消息

我们假设你的Symbian的发送消息的接口采用的是HBufC8 * (utf-8)

那么你在发送你的消息之前,需要将数据转化为utf-8格式,

例如,你可以使用CnvUtfConverter::ConvertfromUnicodeToUtf8()将界面的TBuf转化为8位的utf-8格式,转化过程中你要尤其注意,为HBufC8 * 开辟的内存应该是TBuf长度的2倍!

至于终端如何处理Java端发送的消息就不言而喻了,Java通常会只发送一个String,

也就是一个Unicode字符串,这个时候一般Symbian会以TDes8接收,实际上接收的数据是Unicode的而不是utf-8的,但是

Symbian支持这种格式,所以可以直接就按这种方式处理,而不需要转化。当然,要在界面上显示的话还是需要CnvUtfConverter::

ConvertToUnicodefromUtf8())

2) Java -> Symbian 发送含有中文的消息

服务器端

当然也要处理中文了,刚才已经说了,发送的时候你可以直接发送String

(Unicode),让Symbian去解析,但是接收就得十分小心!!终端Symbian过来的是HBufC8*

(utf-8)格式,Java切忌不要直接用String去接收,需要按字节接收,然后再将这些字节解析成utf-8,再转化为String,有几条简单

的语句可以完成这个操作:

byte b3[] = ...; //来自Symbian的utf-8字节

DataInputStream dis=new DataInputStream(new ByteArrayInputStream(b3));

String chinastring = dis.readUTF();

3) Symbian -> C++ 发送含有中文的消息

现在我们再来讨论下,如何将Symbian的消息发送给C++子系统呢, 显然,C++子系统是按照char */unsigned char *处理字符串的,也就是ASCII码方式(中文就是扩展的ANSI即GB2312�

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值