2011-05-16 106 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