读书人

sqlite字段 读出乱码

发布时间: 2012-02-16 21:30:36 作者: rapoo

求教:sqlite字段 读出乱码
我用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,指点一下,谢谢。

[解决办法]

探讨

自己再顶一下,权当写日记了,咋没人气呢??
我试图这样解决,但有很多不明白的地方,明白人指条明路。
我在"拳拳的Blog"上找到个从utf8转unicode的代码,其函数形式如下所示:

wstring UTF8ToUnicode(const string& str)
{
wstring strOut;
//预定义所需空间
int dwNum = ……

读书人网 >其他数据库

热点推荐