首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

sqlite字段 读出乱码

2012-02-16 
求教:sqlite字段 读出乱码我用vs2005 vc++环境,设置为unicode字符集,wince端为一pda(听说pda也支持unicode

求教: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 = ……

热点排行