专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 其他数据库

sqlite字段 读出乱码

发布时间:2010-05-24 21:31:35 文章来源:www.iduyao.cn 采编人员:星星草
求教: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 = ……
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: