2014-02-24 24 views
1

我正在为我的Windows 8商店应用程序使用sqlite。我已经询问了很多事情成功,但最近我试着做下面的查询:Sqlite for windows store不搜索阿拉伯文字

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

这总是返回0结果与同为阿拉伯的任何文本,但文本为英文:

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

它是有效的,它返回结果。

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

我在想这可能是一种编码问题?

+0

什么是数据库列和搜索字符串中的实际字符值? –

+0

也许尝试将阿拉伯字符转换为unicode转义的字符?像''الم''。你可以尝试从[这里](http://rishida.net/tools/conversion/)的一对夫妇,看看哪些作品。 –

+0

好吧,我试了一下,似乎没有任何工作。有些东西真的很奇怪 – SKandeel

回答

0

经过大量试验后,我们找到了解决方案。

//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 + "%"); 

这是唯一的工作方式:显然在SQL数据库SQLlite层,当它在一个参数化查询样式的进入这样只认阿拉伯字母。

0

EDITED

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

你可以用这个命令可以查询您的编码类型:

PRAGMA encoding; 

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

PRAGMA encoding = "UTF-8"; 
+0

现在它在SQLite.cs中出现了无用的异常:“%???%'”附近出现:语法错误,我认为现在至少我们知道它是编码问题! – SKandeel

+0

我试图从Windows存储C#代码之外的数据库资源管理器执行此操作,并且它返回utf8,但是我不知道如何从C#代码执行此操作? – SKandeel

+0

要添加的东西,这个查询完美的作品使用从Windows Phone项目使用SQLite时,Windows应用商店是这里的问题。 – SKandeel