我目前正在使用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导出/导入正确的数据?
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。
| 归档时间: |
|
| 查看次数: |
5145 次 |
| 最近记录: |