做ASIIC转Unicode的code如下:
long n;
n = MultiByteToWideChar(CP_ACP,0,(char*)pBuf,dwSize,0,0);
pbuf1 = new WCHAR[n+2];
memset(pbuf1, 0, (dwSize+1)*sizeof(WCHAR));
pbuf1[0] = 0xfeff;
MultiByteToWideChar(CP_ACP,0,(char*)pBuf,dwSize,&pbuf1[1],n);
pBuf里面存的是从一个ASIIC编码的TXT文件读出的数据。
目前的问题是,这段代码在VC6.0上可以转换成功,但是在我的smart device上就不行,好像只能转换数字和字母,不能转换中文。
不知道哪位兄弟遇到过这种问题。
我在2416 Wince5.0 和 sirf A4 wince6.0这几个平台都有试过,都不成功。
MultiByteToWideChar()第一个参数,多试试吧
还是就是CE系统,需要LOCAL的支持才可以的
呵呵。。推荐个简单的 何必这么麻烦呢。
mbstowcs(),wcstombs() 参数具体看MSDN,我就这么用很少用楼主的方式了。。
楼主,这是我在VS2005、WinCE6.0中使用的方法,你可以参考下:
CString ASCIIToUnicodeString(char * Str, int Length)
{
wchar_t *buff=new wchar_t[Length+1];
ZeroMemory(buff,Length+1);
int i = MultiByteToWideChar(CP_ACP, 0, Str, -1, buff, Length+1);
buff=0;
CString strResult = buff;
delete [] buff;
buff = NULL;
return strResult;
}
mbstowcs(),wcstombs() 与 MultiByteToWideChar 是一样的, 没有 LOCAL 的支持,也不可能成功的
一般中文系统, 应该是支持的, 如果还不行, 可以试试将第一个参数指定为: 936.
谢谢各位回复,问题解决了。
mbstowcs(),wcstombs() 与 MultiByteToWideChar本身是没有问题的,问题在与os的default语言。