用于Windows应用商店的Sqlite不会搜索阿拉伯语文本

时间:2014-02-24 15:54:35

标签: c# windows-phone-8 sqlite windows-store-apps

我在我的Windows 8商店应用程序中使用sqlite。我一直在成功查询很多东西,但最近我尝试进行以下查询:

SELECT * FROM QuranText where AyaWithoutTashkeel LIKE '%الم%'

这总是返回0结果,对于任何阿拉伯语文本都是相同的,但是当文本是英语时:

SELECT * FROM Translation where TranslationText LIKE '%all%'

它有效并返回结果。

当然我确信数据库本身具有相同的值和一切。然而,我的其他应用程序(WP8应用程序)会在两个查询中返回结果。使用相同的.sqlite数据库并使用sqlite当然。

我认为这可能是一种编码问题?

2 个答案:

答案 0 :(得分:0)

EDITED

我测试了你的查询,它在我的本地工作。你的编码类型是什么?

您可以使用以下命令查询编码类型:

PRAGMA encoding;

它应该是UTF-8。如果不是,您可以使用以下命令更新编码:

PRAGMA encoding = "UTF-8";

答案 1 :(得分:0)

经过大量试验,我们找到了解决方案。显然,SQL数据库上的SQLlite图层只有在以参数化查询样式输入时才能识别阿拉伯字母:

//define your connection here
static SQLite.SQLiteConnection dbConn = = new SQLite.SQLiteConnection(file.Path);
//in your method that makes the call:
string text="الم";
dbConn.Query<DB.QuranText>(@"SELECT * FROM QuranText where AyaWithoutTashkeel LIKE", "%" + text + "%");

这是唯一有效的方法。