日期:2014-05-18  浏览次数:20770 次

小妹请问一个奇怪的Encoding问题!
我有一个SQLite的数据库!
我读取数据库表里的某一字段的值,我在SQLite写SQL语句
读出来的结果是正确的,是中文。
但是到了C#里,读取出来的就是乱码!

并且我不知道这个乱码是什么编码!

SQLiteConnection sqlite_conn;
sqlite_conn = new SQLiteConnection("Data Source=SQLiteDB.db");

sqlite_conn.Open();
try
{
  SQLiteDataAdapter sda = new SQLiteDataAdapter("SELECT XLMC FROM line", sqlite_conn);
  DataSet ds = new DataSet("ds");
  sda.Fill(ds);

  //就在这步出错!读出来的内容是乱码!
  string selectData=ds.GetXml();
  //读出来的乱码内容如下
  //<ds>
  //<Table>
  // <XLMC>??????</XLMC>
  //</Table>
  //</ds>
}
catch (System.Data.SQLite.SQLiteException e)
{
  throw new Exception(e.Message);
}

就那个<XLMC>??????</XLMC>里面的??????是几个中文字。
想问这是为什么!我怎么在程序里改,让它正确显示中文字!

请各位师哥代码明示!小妹在这里不胜感激!

------解决方案--------------------
我也遇到过这种情况
我用的国外的服务器,不支持中文编码
不知道有什么办法
------解决方案--------------------
string selectData=ds.GetXml(); 
//然后执行了什么操作?
Response.Write(selectData);//看看有没有乱码
------解决方案--------------------
C# code
        System.Text.Encoding encoding = System.Text.Encoding("utf-8");
             byte[] b = encoding.GetBytes(selectData);
            string selectDatautf = encoding.GetString;
            Response.Write(selectDatautf);

------解决方案--------------------
上面代码少了参数
C# code
System.Text.Encoding encoding = System.Text.Encoding("utf-8");
             byte[] b = encoding.GetBytes(selectData);
            string selectDatautf = encoding.GetString(b);
            Response.Write(selectDatautf);

------解决方案--------------------
sql 字段类形是什么
varchar
or
nvarchar

------解决方案--------------------
查一下xml文件是不是少了
<?xml version="1.0" encoding="GB2312" ?>
------解决方案--------------------
你用ds.wiritexml 这个方法试试 
让他自己写成一个xml文件看看是否乱码
------解决方案--------------------
sqlite的默认编码为ISO-8859-1
在插入时进行utf-8/gb2312--->ISO-8859-1
在读入时进行ISO-8859-1--->utf-8/gb2312
试试,这样可不可行?