VC 英文内码下中文字符串显示乱码

我的程序中用了一个ocx控件,控件中的一个方法从远端服务器(中文系统)取回一个类型为BSTR的字符串“区域”,如果客户端的语言为中文,可以在内存中看到接收到的为“3a53... 我的程序中用了一个ocx控件,控件中的一个方法从远端服务器(中文系统)取回一个类型为BSTR的字符串“区域”,如果客户端的语言为中文,可以在内存中看到接收到的为“3a 53 df 57”,而若果将客户端的语言改为英文,则内存中为“c7 00 f8 00 d3 00 f2 00” ,显示的为乱码,我在英文系统下将这个字符串发给服务器,服务器不能识别。请问我应当如何将“c7 00 f8 00 d3 00 f2 00”转换成“3a 53 df 57”?或者如何将个字符串处理后发给服务器使其能够识别
谢谢两位的解答 英文系统下的问题已经解决,但日文下出现了问题,下面是我的代码
//bstr 为从服务器(中文系统)取回的字符串“区域”

char *pch = _com_util::ConvertBSTRToString(bstr);
Ascci2Unicode(pch, ptch, iMaxLen);
delete[] pch;

int Ascci2Unicode(char* pch, TCHAR* ptch, int iMaxLen)
{
int nChar = MultiByteToWideChar(936, 0, pch, -1, NULL, 0);
wchar_t* pBuf = new wchar_t[nChar+1];
nChar = MultiByteToWideChar(936, 0, pch, -1, pBuf, nChar);
_tcsncpy_s(ptch, iMaxLen, pBuf, nChar);
return nChar;
}
日文系统下bstr 在内存中为 87 ff 72 e6
char *pch = _com_util::ConvertBSTRToString(bstr); 如此转换后的 pch 为 :c7 f8 d3 81
Ascci2Unicode() 转换后 ptch 为: 3a 53 fc 89,正确应该为:“3a 53 df 57”

为什么日文下有部分汉字没有正确转换?
汉字(中文系统) -> unicode(日文系统)->unicode(日文系统下的中文unicode)
第二步我该怎么做?也就是上一步的反转过程,似乎第一步这个过程中就有错误
因为BSTR是unicode的,因此第一步是系统自动完成,如果这个过程就出现错误,是否就不能反转回去?
展开
 我来答
epmhm
推荐于2016-06-06 · TA获得超过112个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:159万
展开全部
MultiByteToWideChar()
WideCharToMultiByte()

这两个函数可以实现对于UNICODE 码和ASCII友的转换

将客户端的语言改为英文,则内存中为“c7 00 f8 00 d3 00 f2 00” , 这个是UNICODE码,只要调用了WideCharToMultiByte函数(具体的你查下MSDN就知道了),这样,就不会是乱码了。

补充:
关于你的问题,我到网络上找了一下,问题的答案可能是:
1 首先机器上要安装日文的字体
2 直接使用UNICODE表示日文
具体的我也不太清楚。 好像中日韩的使用的是同一UNICODE字符集,我也没有用过日语。。。
469392501
2010-07-15 · 超过27用户采纳过TA的回答
知道答主
回答量:179
采纳率:0%
帮助的人:88.1万
展开全部
用记事本打开 点另存为 底下编码选UTF-8 保存 就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式