日期:2014-05-20  浏览次数:21069 次

vs2008 C# 使用 System.Data.SQLite.dll 字符编码问题
vs2008 C# 使用 System.Data.SQLite.dll,一切正常。
但是我数据库是以前用C++代码生成的,里面汉字编码格式是GB2312,现在用C# 使用 System.Data.SQLite.dll读取汉字会变成乱码,上网查了查资料,System.Data.SQLite.dll默认会按Utf8格式读取。
...
SQLiteDataReader dr;
...
dr.Read();
...
dr[2].ToString();//这句ToString将GB2312的按Utf8读了
...
因为解析的时候就错了,所以读出来的再用怎么用System.Text.Encoding都转不过来。
我现在想解决的办法一个是:
用SQLiteDataReader里面的
public override long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length);
但是我看了System.Data.SQLite源代码,需要数据字段类型是blob,而我原来数据库字符串类型定义的是varchar,原来数据库是不能动的。
另一个办法是修改System.Data.SQLite源码,让他按GB2312读取,但是我接触C#时间不长,能力达不到...
也不知道问题说清楚了没有...
请教诸位高手,怎么解决在C#下利用System.Data.SQLite.dll读取汉字编码格式是GB2312的数据库,数据库字符串类型定义的是varchar不是blob?

------解决方案--------------------

------解决方案--------------------
顶贴也是一种美德。。。
------解决方案--------------------
csdn告诉我们,每天顶贴会加10分!
------解决方案--------------------
我没有找到System.Data.SQLite.dll,不知道他的用法,你可以看看他的接口,看看有没有设置encoding的接口
------解决方案--------------------

------解决方案--------------------
转码
------解决方案--------------------
暂时没使用2008
------解决方案--------------------
只能 修改System.Data.SQLite源码,让他按GB2312读取
------解决方案--------------------
最好还是统一使用utf-8,以后就不会再有编码转换的问题了
------解决方案--------------------
不要乱改啊 按默认的了
------解决方案--------------------
不要乱改啊 按默认的了
------解决方案--------------------
哎,要是开源的问题就解决了
------解决方案--------------------
没用过vs2008,顶
------解决方案--------------------
没用过vs2008,顶
------解决方案--------------------
没用过vs2008,顶
------解决方案--------------------
楼主说的好啊!顶啊!
------解决方案--------------------
C# code

SQLiteDataReader dr;
// ...
dr.Read();
// ...
// dr[2].ToString();
byte[] bs = dr[2];
string s = System.Text.Encoding.GetEncoding("GB2312").GetString(bs);
// 这里 s 就是你要的 GB2312 编码的字符串

------解决方案--------------------
正想學sqlite
------解决方案--------------------
dr[2].ToString()的值以及实际应该的值分别是什么
------解决方案--------------------
帮顶,顺便为加分
------解决方案--------------------
up

------解决方案--------------------
顶。。。。
------解决方案--------------------
编码转换问题浪费我们太多时间。
------解决方案--------------------
太好了1
------解决方案--------------------
顶顶顶顶。。。。