vs2008 C# 使用 System.Data.SQLite.dll 字符编码有关问题


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

C#语言 .net 程序开发

长门有希的忧郁 13 years, 10 months ago


没用过vs2008,顶

肉嘎嘎思密达 answered 13 years, 10 months ago


没用过vs2008,顶

青丝半缳慵依床 answered 13 years, 10 months ago


没用过vs2008,顶

草莓亮晶晶 answered 13 years, 10 months ago


顶顶顶顶。。。。

本須和茉莉 answered 13 years, 10 months ago


太好了1

复仇的黑百合 answered 13 years, 10 months ago


编码转换问题浪费我们太多时间。

Amanda夏 answered 13 years, 10 months ago


顶。。。。

B力ZERO answered 13 years, 10 months ago


up


相乐美佐枝 answered 13 years, 10 months ago


帮顶,顺便为加分

脚底_抹香 answered 13 years, 10 months ago


dr[2].ToString()的值以及实际应该的值分别是什么

Di.Mon answered 13 years, 10 months ago


正想學sqlite

臨水照花聽雪夜 answered 13 years, 10 months ago


楼主说的好啊!顶啊!

被监禁的千雨 answered 13 years, 10 months ago


  C# code

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

ff1122 answered 13 years, 10 months ago

Your Answer