ccombobox显示乱码?
我调用的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);
[最优解释]
楼主是什么开发工具和环境,你的LIB是ANSI方式编译还是UNICODE方式编译
[其他解释]
把读出来的码记在editplus里,多重新载入几次,好确定到底是什么码。
[其他解释]
我原来看一个工程,里面是乱码,起初看着像港台的big5码,试了半天,Unicode试了半天,都不行,结果最后试的,竟然是日文的一个什么码。
[其他解释]
[其他解释]
网上一个好人心,这样告诉我这样把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);
[其他解释]
上面的这个方法用的CListCtrl控件,提到CListCtrl的用的utf-16编码,难道vc里每个控件编码不一样?那ccombobox用的是哪个编码?
[其他解释]
呵呵,你的错误在于你的dll和lib文件是ANSI方式编译的,你在2008下面在重新编译DLL和LIB,然后用sqlite3_open16()这些函数就没有问题了,汉字也不会出问题,应为这种方式下用的就是UTF-16
[其他解释]
问题已解决,谢谢各位了
[其他解释]
太不厚道了,解决了,方法说出来啊~~~就知道找别人帮忙了~
[其他解释]
支持9楼
[其他解释]
我就不说什么了,我心里跟九楼想的一样。
[其他解释]
太不好意思了,一年才回帖,不过一年已经过去了,我真的忘了,不好意思了,
------其他解决方案--------------------
我也碰到了,在字符串中用 LPCTSTR,_T.
设置Combobox属性: Has Strings 为True
不知道 你们的可以波
[其他解释]
又过一年了