我用vs2005 vc++环境,设置为unicode字符集,wince端为一pda(听说pda也支持unicode字符集)
读取两个字段(fld1,fld2)时,不管是包含中文,还是字符(比如:fld1放中文,fld2放数字---内容为4个一组的数字字符"2345");表定义时,两个字段都定义成nvarchar(32)型。现真机调试两字段时,都出现乱码。我用的是sqlite_column_text或sqlite_column_text16两个函数读的.
据说sqlite表内放的数据都是utf8的,所以我试图转换。引用litinglong提供的一个转换函数,在vs2005中编译老出错。
///////////////utf8转换成GB////////////////////////////////////////////////
CString UTF8ToGB(const char *str)
{
CString result;
WCHAR *strSrc;
TCHAR *szRes;
//获得临时变量的大小
int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
strSrc = new WCHAR[i+1];
MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);
//获得临时变量的大小
i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
szRes = new TCHAR[i+1];
WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);
result = szRes;
delete []strSrc;
delete []szRes;
return result;
}
谁懂这个MultiByteToWideChar、WideCharToMultiByte,指点一下,谢谢。
------解决方案--------------------------------------------------------