当前位置: 代码迷 >> 其他数据库 >> sqlite字段 读出乱码
  详细解决方案

sqlite字段 读出乱码

热度:9220   发布时间:2013-02-26 00:00:00.0
求教: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 = ……
  相关解决方案