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 程序开发

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


没用过vs2008,顶

肉嘎嘎思密达 answered 12 years, 9 months ago


没用过vs2008,顶

青丝半缳慵依床 answered 12 years, 9 months ago


没用过vs2008,顶

草莓亮晶晶 answered 12 years, 9 months ago


顶顶顶顶。。。。

本須和茉莉 answered 12 years, 9 months ago


太好了1

复仇的黑百合 answered 12 years, 9 months ago


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

Amanda夏 answered 12 years, 9 months ago


顶。。。。

B力ZERO answered 12 years, 9 months ago


up


相乐美佐枝 answered 12 years, 9 months ago


帮顶,顺便为加分

脚底_抹香 answered 12 years, 9 months ago


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

Di.Mon answered 12 years, 9 months ago


正想學sqlite

臨水照花聽雪夜 answered 12 years, 9 months ago


楼主说的好啊!顶啊!

被监禁的千雨 answered 12 years, 9 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 12 years, 9 months ago

Your Answer