我调用的sqlite数据库,显示在ccombobox为什么是乱码啊?
是不是要utf-8 转换成 utf-16啊,怎么转啊?
我用sqlite api16位也是一样啊,生成的.db文件直接看起来怪怪的,不过用SQLite Expert还可以打开了,而且可以看到utf-16 hign endian,但显示的还是乱码,向高人请教 代码如下:
sqlite3_open(".\\PIFA.db", &db);  //用sqlite_open16,其它的几个函数用16也不行
sprintf(sql, "CREATE TABLE Tbl(姓名 TEXT PRIMARY KEY);");
  sqlite3_exec(db, sql, NULL, NULL, NULL);  memset(sql, 0, sizeof(sql));
sprintf(sql, "INSERT INTO Tbl VALUES (?);");
  sqlite3_prepare(db, sql, -1, &stmt, NULL); memset(sql, 0, sizeof(sql));
sprintf(sql, "小李");
  sqlite3_bind_text(stmt, 1, sql, -1, NULL);
sqlite3_step(stmt); sqlite3_prepare(db, "SELECT * FROM Tbl", -1, &stmt, NULL);
sqlite3_step(stmt); CComboBox* pCombox = (CComboBox*)GetDlgItem(IDC_COMBO1);
pCombox->AddString((LPCTSTR)sqlite3_column_text(stmt_maijia, 0));
pCombox->SetCurSel(0);  
sqlite3_finalize(stmt_maijia);  

解决方案 »

  1.   

    楼主是什么开发工具和环境,你的LIB是ANSI方式编译还是UNICODE方式编译
      

  2.   

    用的visual studio 2008,用的UNICODE
      

  3.   

    网上一个好人心,这样告诉我这样把utf-8 转换成 utf-16,但还是不行
    LPCSTR lpc = (LPCSTR)sqlite3_column_text(stmt, 0);
    size_t dwNum = MultiByteToWideChar(CP_UTF8, 0, lpc, -1, NULL, 0);
    wchar_t* pwText = new wchar_t[dwNum];
    MultiByteToWideChar(CP_UTF8, 0, lpc, -1, pwText, dwNum);
      

  4.   

    上面的这个方法用的CListCtrl控件,提到CListCtrl的用的utf-16编码,难道vc里每个控件编码不一样?那ccombobox用的是哪个编码?
      

  5.   

    呵呵,你的错误在于你的dll和lib文件是ANSI方式编译的,你在2008下面在重新编译DLL和LIB,然后用sqlite3_open16()这些函数就没有问题了,汉字也不会出问题,应为这种方式下用的就是UTF-16
      

  6.   

    把读出来的码记在editplus里,多重新载入几次,好确定到底是什么码。
      

  7.   

    我原来看一个工程,里面是乱码,起初看着像港台的big5码,试了半天,Unicode试了半天,都不行,结果最后试的,竟然是日文的一个什么码。
      

  8.   

    我也碰到了,在字符串中用 LPCTSTR,_T.
    设置Combobox属性: Has Strings 为True不知道 你们的可以波