将c ++中的unicode字符串写入sqlite DB

TPh*_*ton 5 c++ sqlite

我目前正在使用sqlite和c ++构建一个经理游戏.我已经找到了几乎涵盖了创建游戏所需的每个领域的教程,但是一个小问题一直困扰着我.

当我在c ++中编写一个字符串,例如"AndreasKlöden"并使用sqlite语句将数据插入我的sqlite DB中时,umlautö中的特殊字符丢失,这适用于许多欧洲名称,如Léfevre,Würth等.

我已经搜索了答案,似乎c ++字符串在ANSII中或类似的东西.不知怎的,我应该编写unicode字符串,以避免下面显示的问题:

http://imageshack.dk//viewimage.php?file=/imagesfree/0Ej53884.png

有没有人知道如何用c ++编写unicode字符串,所以我可以从sqlite DB导出/导入正确的数据?

Vik*_*pov 4

SQLite“支持”UTF-8(此处引号是因为基本上 UTF8 仅使用 ASCII 字符,因此实际上没有任何“支持”)。因此最好的(也是向后兼容的)方法之一是使用 UTF-8 编码。SQLite 中也提供了 wchar_t 支持,但使用它的原因只有一个:如果您的代码已经依赖于 wchar_t。

如果“UTF-8”不是一个熟悉的主题,请阅读此内容:http://www.joelonsoftware.com/articles/Unicode.html

调用C API

sqlite_exec(db_conn, "insert somevalue into sometable values(\"utf encoded string\""), NULL, NULL, "error");
Run Code Online (Sandbox Code Playgroud)

会做的工作。

如果您只需要支持有限数量的代码页或使用 ICU 库来获得全面支持,则可以手动完成实际转换。还有像http://utfcpp.sourceforge.net/这样的库

CodeProject 也有很多 UTF-8 示例代码:

http://www.codeproject.com/Articles/14637/UTF-8-With-C-in-a-Portable-Way

http://www.codeproject.com/Articles/5281/UTF-8-Encoding-and-Decoding

ETC。