为了账号安全,请及时绑定邮箱和手机立即绑定

关于C++和JAVA的编码问题

关于C++和JAVA的编码问题

慕婉清6462132 2019-03-07 14:11:32
首先,我的开发环境是64位WIN7,用的工具是VS2005,项目的字符集选择是使用 Unicode 字符集。在C++中,我定义一个字符串 string keyword("测试1234");然后输出字符串对应的16进制:for(string::size_type pos = 0; pos != keyword.size(); pos++){cout <<hex<<(int)keyword[pos];}得到的结果是:ffffffb2ffffffe2ffffffcafffffffd 4313233|------------- 测试 ------------ | 1234 |这里我就不理解了,网上查资料说用Unicode字符集是中文字符和英文字符都占2个字节,如果说我的64位WIN7是每个字节16位的话,那每个中文应该是有32位,是该这样解释吗?可是为什么“测试”2个中文占了128位?但是数字“1234”只有这么点?完全不理解啊?网上说如果字符集选择是多字节使用 多字节字符集 ,那么英文字符和中文字符会占不同的字节数,可是为什么我输出的结果是一样的呢?求解啊,附件中是我这个程序的代码,请高人给看看!还有,我根据网上的教程,将字符串转换为UTF-8的编码(对方要求是UTF-8编码),然后通过webservice发送给服务端,但是,对方收到的是乱码,这个问题困扰我好久了;但是我用JAVA写一个程序,什么编码转换都没做,直接发送给服务器,那边却不是乱码的,貌似JAVA虚拟机会自动将编码转换为UTF-8,于是我将JAVA生成字符串通过SOCKET发送给C++这边的程序然后在C++程序上接收该字符串并发送给服务端,可是,仍然是乱码的,求解啊!!谢谢了!!!
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

#include 
#include

查看完整回答
反对 回复 2019-04-26
  • 2 回答
  • 0 关注
  • 474 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信