gpt4 book ai didi

c++ - SQLite - 编码问题

转载 作者:行者123 更新时间:2023-11-30 05:19:19 25 4
gpt4 key购买 nike

我正在使用 SQLite 编写一个应用程序,每当我插入西类牙字符时,我都会得到这种字符串:Mart�n(应该读作“Martín”的地方)

好吧,如果我用 SQLiteManager(Firefox 插件)打开我的数据库,我的字符串看起来很奇怪。但是 SQLiteManager 能够正确插入和显示任何字符串。 SQLiteManager 插入的任何字符串也可以在我的应用程序中正常显示。

所以我一定是在插入字符串时做错了什么。这是我的代码:

char szAux[512];
ZeroMemory(szAux, 512);
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, szSQL, wcslen(szSQL), szAux, 512, NULL, 0);
int nRet= sqlite3_exec(m_hDB, szAux, NULL, 0, &pErrMsg);

注意:szSQL 是我的应用程序使用的 wchar 字符串,在调用 WideCharToMultiByte() 后包含以下内容:“INSERT INTO numeros VALUES (1, 'Martín','Sonny', '123-123123', 'me@email.com', -1, 0, 1482036037, 125.500000)”

SQLiteManager 告诉我我的数据库是 utf-16le。我在 Windows10 64 位机器上使用 vs2015。

如果有任何帮助,我将不胜感激。提前致谢!

最佳答案

SQLite 函数使用 UTF-8 编码。

CP_ACP 是不同的东西。使用 CP_UTF8

(数据库编码只是指定文本在数据库文件中的存储方式,但不影响任何 API 函数。使用 utf-16le 只会降低效率。)

关于c++ - SQLite - 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com