在wince5.0上调用别人的动态库,返回的是UNICODE的字节流(BYTE data[DATALEN]),
我使用以下方法转换:
CString str;
for( i=0; i
{
str += data;
}
结果是:返回英文就正常,如果里面包含中文,中文部分就是乱码。
我试过MultiByteToWideChar,没有成功。
请指点迷津!谢谢!!
TCHAR *s = new TCHAR[DATALEN];
wcscpy(s, (TCHAR*)data);
str = s;
你好像用反了吧,用WideCharToMultiByte才符合你的要求。
多字节和宽字符之间转换的函数: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(编码页)
搞定!
谢谢大家。
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;
}