【发布时间】:2013-08-20 13:22:58
【问题描述】:
我正在使用 SQLite 数据库开发一个 Windows 应用商店应用程序 (C#)。
问题
如果我在一行中有一个特殊字符,如“qwerôty”,当我的应用检索此值时,字符串对象包含“qwerty”(没有此特殊字符)。
数据库创建
我使用 sqlite3 实用程序创建我的数据库,然后我将我的所有查询(创建表、插入...)写入一个文件(UTF-8 编码)并复制并粘贴所有查询在 sqlite3 的命令提示符下。
当我执行 select * from table 时,我看到“qwerôty”,但一旦在我的应用程序中,该字符串不包含“ô”。
应用内代码
这是我从 SQLite 数据库中检索数据的方法:
private SQLiteAsyncConnection conn = new SQLiteAsyncConnection(DbPath);
return await conn.Table<BusinessObject>().ToListAsync();
字符串属性在 BusinessObject 对象内
我的猜测
我认为我使用 sqlite3 创建的 sqlite 文件未以 UTF-8 编码。当我使用 Windows 内置记事本打开它并执行“另存为”时,选择的编码是 ANSI。但我找不到如何创建以 UTF-8 编码的数据库。
如果您对我的问题有任何想法,请提前致谢。
拉菲
【问题讨论】:
-
我刚刚尝试使用 SQLiteSpy 填充我的数据库,并且所有特殊字符都可以从我的应用程序中很好地读取。所以它让我认为问题来自 sqlite3 工具,但我没有真正的解释。在有人找到充分的理由之前,我会让这篇文章无人回答。谢谢,拉菲。
-
记事本是文本(解码)保存为编码我认为只是为了保存。
标签: c# .net sqlite utf-8 windows-store-apps