4680|6

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

UNICODE字节流如何转换成字符串(内含中文)? [复制链接]

在wince5.0上调用别人的动态库,返回的是UNICODE的字节流(BYTE data[DATALEN]),
我使用以下方法转换:
CString str;
for( i=0; i {
  str += data;
}

结果是:返回英文就正常,如果里面包含中文,中文部分就是乱码。

我试过MultiByteToWideChar,没有成功。

请指点迷津!谢谢!!

最新回复

搞定! 谢谢大家。 LPOLESTR char_to_wchar(LPCSTR lpa) {       size_t aLen = strlen( lpa ) + 1;              int wLen = MultiByteToWideChar(                 CP_ACP,                 0,                 lpa,                 aLen,                 NULL,                 0);              LPOLESTR lpw = new WCHAR [wLen];       MultiByteToWideChar(                 CP_ACP,                 0,                 lpa,                 aLen,                 lpw,                 wLen);         return lpw; }  详情 回复 发表于 2008-12-5 15:15
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
TCHAR *s = new TCHAR[DATALEN];
wcscpy(s, (TCHAR*)data);
str = s;
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你好像用反了吧,用WideCharToMultiByte才符合你的要求。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
mark。以前貌似有人问过了。。。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
多字节和宽字符之间转换的函数:mbstowcs, mbtowc, wcstombs, wctomb.
  mbstowcs---Convert a multi-byte(ANSI) string to wide character stirng(Unicode).
  wcstombs---Convert a wide character string to multi-byte string.
  WCHAR szwcBuffer[100];
  char szBuffer[100];
  char* lpszConvert = "ANSI String to convert";
  WCHAR* lpszwcConvert = _T("Unicode string to convert");
  int nChars;
  nChars = mbstowcs(szwcBuffer, lpszConvert, 100);
  nChars = wcstombs(szBuffer, lpszwcConvert, 100);
  //MultiByteToWideChar, WideCharToMultByte.        //用在code page(编码页)
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
试试这个函数比较容易:
  1. #include
  2. size_t wcstombs(char *out, const wchar_t *in, size_t size);
复制代码
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

7
 
搞定!
谢谢大家。

LPOLESTR char_to_wchar(LPCSTR lpa)
{
      size_t aLen = strlen( lpa ) + 1;
      
      int wLen = MultiByteToWideChar(
                CP_ACP,
                0,
                lpa,
                aLen,
                NULL,
                0);
      
      LPOLESTR lpw = new WCHAR [wLen];
      MultiByteToWideChar(
                CP_ACP,
                0,
                lpa,
                aLen,
                lpw,
                wLen);

        return lpw;
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表