wince工程 char 转 wchar_t有关问题
wince工程 char 转 wchar_t问题
wince工程要显示中文要用Unicode编码方式。但我通过MultiByteToWideChar()将char转换wchar_t。(如下)
(wince系统是英文的)
char a[] = "我在测试";
int buffersize = MultiByteToWideChar(CP_ACP,0,a,-1,NULL,0);
wchar_t *wbuffer;
wbuffer = new wchar_t[buffersize * sizeof(wchar_t)];
if(!wbuffer)
{
delete []wbuffer;
}
MultiByteToWideChar(CP_ACP,0,a,-1,wbuffer,buffersize);
DrawTextW( dc.m_hDC ,wbuffer,buffersize, &rect , NULL );
但为什么打印出来还是乱码呢??????
------解决方案--------------------
将CP_ACP替换为CP_UTF8,应该就可以了
------解决方案--------------------
是没有转换码表造成的。。。
可以试试 libconv
------解决方案--------------------
如果转换的不是,一般是MultiByteToWideChar()函数的第一个参数错误
当然,前提 是 CE系统必须支持相应的codepage,否则无法进行转换的.
wince工程要显示中文要用Unicode编码方式。但我通过MultiByteToWideChar()将char转换wchar_t。(如下)
(wince系统是英文的)
char a[] = "我在测试";
int buffersize = MultiByteToWideChar(CP_ACP,0,a,-1,NULL,0);
wchar_t *wbuffer;
wbuffer = new wchar_t[buffersize * sizeof(wchar_t)];
if(!wbuffer)
{
delete []wbuffer;
}
MultiByteToWideChar(CP_ACP,0,a,-1,wbuffer,buffersize);
DrawTextW( dc.m_hDC ,wbuffer,buffersize, &rect , NULL );
但为什么打印出来还是乱码呢??????
------解决方案--------------------
将CP_ACP替换为CP_UTF8,应该就可以了
------解决方案--------------------
是没有转换码表造成的。。。
可以试试 libconv
------解决方案--------------------
如果转换的不是,一般是MultiByteToWideChar()函数的第一个参数错误
当然,前提 是 CE系统必须支持相应的codepage,否则无法进行转换的.