ASIIC转Unicode问题请教

wide   2010-5-17 13:24 楼主
做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这几个平台都有试过,都不成功。

回复评论 (8)

MultiByteToWideChar()第一个参数,多试试吧

还是就是CE系统,需要LOCAL的支持才可以的
点赞  2010-5-17 14:07
引用: 引用 1 楼 91program 的回复:
MultiByteToWideChar()第一个参数,多试试吧

还是就是CE系统,需要LOCAL的支持才可以的



我第一参数试了好多遍,就是不行。
你说的这个local支持是什么意思?
是不是中文支持?
我的系统带有中文字库的。
点赞  2010-5-17 14:16
有没有做过的这方面的同仁?
点赞  2010-5-17 16:09
呵呵。。推荐个简单的 何必这么麻烦呢。

mbstowcs(),wcstombs() 参数具体看MSDN,我就这么用很少用楼主的方式了。。
点赞  2010-5-17 16:20
引用: 引用 4 楼 papapa123123 的回复:
呵呵。。推荐个简单的 何必这么麻烦呢。

mbstowcs(),wcstombs() 参数具体看MSDN,我就这么用很少用楼主的方式了。。


好谢谢,我试下!
点赞  2010-5-17 17:45
楼主,这是我在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;
}
点赞  2010-5-17 17:57
mbstowcs(),wcstombs() 与 MultiByteToWideChar 是一样的, 没有 LOCAL 的支持,也不可能成功的

一般中文系统, 应该是支持的, 如果还不行, 可以试试将第一个参数指定为: 936.
点赞  2010-5-18 08:51
谢谢各位回复,问题解决了。

mbstowcs(),wcstombs() 与 MultiByteToWideChar本身是没有问题的,问题在与os的default语言。
点赞  2010-5-18 09:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复