这是我在网上查到的一种方法:
CppSQLite3DB db;
db.open(L"\\storge\\mySqlite.db");
CppSQLite3Query q = db.execQuery(L"select * from Address_List where NUMBER ='"+m_edit1+"'");
CString strTemp;
while (!q.eof())
{
strTemp.Format(_T("%s-%s-%s-%s"),q.fieldValue(0),q.fieldValue(1),q.fieldValue(2),q.fieldValue(3));
UpdateData();
m_list.AddString(strTemp); //显示到listbox控件中
q.nextRow();
}
q.finalize();
db.close();
这个代码能实现查询并显示到listbox,但是如果q.fieldValue取的内容中有中文的话则显示的是乱码,我一直也没弄好。(有人说是编码的问题,恕我愚钝,弄了很久也没弄好)
所以想请教下,有没有另外的代码或别的方法能够实现我想要的功能?
请指点!谢谢!(用的evc)
有人说:Sqlite默认是UTF-8
读出数据后,再用MultiByteToWideChar把它转成Unicode...下面是我弄的
这是我的代码:
int size= WideCharToMultiByte(CP_ACP,0,q.fieldValue(3),-1, NULL, 0, NULL,0);
char * AsciiBuff =new char[size];
WideCharToMultiByte(CP_ACP,0,q.fieldValue(3),-1,AsciiBuff,size, NULL,0);
//q.fieldValue(3)是取出的数据是unsigned short类型,我先转成了char*,下面是再转成Unicode
DWORD dwNum = MultiByteToWideChar (CP_UTF8, 0, AsciiBuff, -1, NULL, 0);
wchar_t *pwText;
pwText = new wchar_t[dwNum];
MultiByteToWideChar (CP_UTF8, 0, AsciiBuff, -1, (LPWSTR)pwText, dwNum);
我试了不行,大家看看代码,请大家指出问题在哪里?
谢谢!!