2014-02-24 63 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