Я из Китая, у меня вопрос по sqlite, но мой английский немного плохой. Я постараюсь четко выразить себя.
Недавно я сделал что-то в sqlite, используя Visual Studio 2005 (VC ++) для разработки WinCE, используя базу данных sqlite. В моей таблице поле содержит несколько китайских символов. Когда я показываю их, я не получаю то, что хочу, потому что все они странные персонажи.
Я использую желаемое значение возвращаемого столбца функций, но не могу.
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
// or
const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
Они сказали, что кодировка в sqlite3 - это utf8, поэтому вам нужно конвертировать ее в юникод. Я попытался выполнить эту работу с помощью функции, найденной в Интернете, которая выглядит следующим образом:
wstring UTF8ToUnicode(const string& strin)
{
wstring strOut;
int dwNum = MultiByteToWideChar(CP_UTF8,0,strin.c_str(),-1,0,0)
wchar_t* pBuffer = new wchar_t[dwNum];
if (!pBuffer){return strOut;}
memset(pBuffer,0,dwNum*sizeof(wchar_t));
if (MultiByteToWideChar(CP_UTF8,0,strin.c_str(),-1,pBuffer,dwNum)>=0)
{
strOut= pBuffer;
}
delete[] pBuffer;
return strOut;
}