2011-05-16 119 views
0

我在C#中使用Sqlite數據庫,我有這個問題:Sqlite數據庫是否支持波斯/阿拉伯語編碼?因爲我寫了一些阿拉伯語/波斯語數據,當我想從數據庫中讀取數據時,它會以不適合的形式讀取! enter image description hereSqlite數據庫是否支持波斯語/阿拉伯語編碼?

我的代碼:

int len = ds.Tables["tbl"].Rows.Count; 
      int index = rnd.Next(0, len - 1); 
      //notifyIcon1.ShowBalloonTip(15, "پیام عشق ", ds.Tables["tbl"].Rows[index][0].ToString(), ToolTipIcon.Info); 
      string str = ds.Tables["tbl"].Rows[index][0].ToString(); 
      MessageBox.Show(str); 

感謝。

下一個的我的代碼:

DataSet ds; 
ds = SQLite_DB.Select_DB(SQLite_DB.Con_string("data.s3db"), "select * from info"); 
+2

你的代碼與Sqlite無關。 – SLaks 2011-05-16 17:31:12

回答

0

簡而言之:號

SQLite的支持只是極,數字編碼的非常有限的:UTF-8和UTF-16(多品種)。

幸運的是,UTF-8非常適合表達阿拉伯語或波斯語,或任何其他語言(包括克林貢語,如果您喜歡的話)。

當然,您的工具鏈的某些其他部分會妨礙編碼,請檢查C#.net SQLite包裝器和您的Forms代碼的文檔。

+0

現在我該怎麼做才能得到正確的結果? – 2011-05-16 17:40:18

+0

@salar_cpp_cs:瀏覽整個工具鏈,並在每個級別測試UTF-8清潔度。使用像sqlite3.exe這樣的外部可執行文件檢查數據庫是否格式正確(這可能在您的平臺上以不同的名稱命名);檢查你的源文件是否爲UTF-8編碼,檢查是否設置了任何適當的編譯器標誌,檢查是否有正確的編碼和正確讀取的輔助文件,學習如何使用C#l10n和i18n實用程序,並理解一些核心概念字符編碼和SQLite是如何設計的。對於初學者。 – 2011-05-16 17:48:15

+0

Williham是正確的 - 您需要驗證垃圾是否進入。如果您使用的是System.Data.Sqlite,請在您要插入數據的位置放置一個斷點。據推測,你是通過SqliteCommand參數來做到這一點的。看看這個參數的值是多少 - 如果這是垃圾,那麼你會搞砸編碼。 System.Data.Sqlite將接受一個CLR字符串(基本上是UCS2),並將它轉換爲UTF-8,只要你的字符串進入看起來不錯,它應該正確地出來一口井。 – 2011-05-16 18:43:13

2

只要您使用的是Version 3或更高版本,就可以使用UTF-8/UTF-16,這對於阿拉伯語來說是最好的選擇。

+0

現在我該怎麼做才能得到正確的結果? – 2011-05-16 17:40:05