sqlite读取中文乱码(C#)

C#读取一些C++创建的sqlite数据库时乱码,  C++保存DB是用GB2312编码的, C#调用的官方的system.data.sqlite是用的UTF-8编码的, 在读取时会乱码, 用一个GB2312编码的system.data.sqlite就行了.

可以下载sqlite源码修改重编译dll

修改SQliteConvert.cs line52  
  //private static Encoding _utf8 = new UTF8Encoding();
 private static Encoding _utf8 = System.Text.Encoding.GetEncoding("GB2312");

ADO.NET 2.0 Provider for SQLite 1.0.66.0

1.066.0中少个mergebin.exe, 在老版本的1.0.61.0中有. VS2008下载

已经编译好的读取GB2312数据库的DLL(下载), 解压后选择合适的dll, 改名为System.Data.SQLite.dll再使用.

参考:

1.http://blog.sina.com.cn/s/blog_63edfc900100snvw.html

2.vs2008 C# 使用 System.Data.SQLite.dll 字符编码问题
http://topic.csdn.net/u/20090601/11/9edb203e-ae0e-41d8-b21f-cd6147f31408.html
3.vs2008如何编译完整的System.Data.SQLite.dll
http://topic.csdn.net/u/20090603/09/2236072b-da66-459b-b175-fc4676fe984f.html

时间: 2024-10-08 11:02:17

sqlite读取中文乱码(C#)的相关文章

File.ReadAllText 读取中文乱码问题

原文:File.ReadAllText 读取中文乱码问题 用 File.ReadAllText(filepath)   去读取中文txt文件会遇到乱码问题,我自己测试了一下,ANSI编码的txt才会出现这种问题,其他编码入utf-8.unicode不会出现这类问题,编码上面通过一个重载就可以搞定了 File.ReadAllText (path, Encoding.Default) System.Text.Encoding 命名空间下有各种编码,操作汉字的文件或流常要涉及到

InputStream 读取中文乱码 扩展

对于InputStream读取中文乱码,下面这段话给出了很好的解释,以及后续编码上的扩展. BufferedInputStream和BufferedOutputStream是过滤流,需要使用已存在的节点来构造. 即必须先有InputStream或OutputStream,相对直接读写,这两个流提供带缓存的读写,提高了系统读写效率性能. BufferedInputStream读取的是字节byte,因为一个汉字占两个字节,而当中英文混合的时候,有的字符占一个字节,有的字符占两个字节. 所以如果直接读

解决SQLite数据库中文乱码问题

  关于SQLite中出现中文乱码的分析以及解决方案 我们在使用SQLite数据库时候,可能会发现,向数据库插入数据时候显示的是汉字,但通过SQLite读出来时却显示的乱码,这是因为SQLite数据库所支持的编码方式和我们程序中的编码方式不一样,SQLite数据库采用的是UTF-8编码方式,而我们在程序中常常使用的是宽字节uncoid编码方式,所以使用SQLite数据库读出来以后会显示乱码,就是因为编码方式不一样,举个例子,基于对话框的程序,我们要在listctrl控件上显示我们数据库中读入的数

boost.property_tree读取中文乱码问题正确的解决方式

开发项目的时候在使用boost,在宽字符下遇到中文乱码问题 上网上看大家都是先转成utf8在进行解析的,例如: http://blog.csdn.net/hu_jiangan/article/details/49945373 中 void Init(const wstring& fileName, wptree& ptree) { std::wifstream f(fileName); std::locale utf8Locale(std::locale(), new std::codec

[JAVA开发]Properties读取中文乱码解决方法

1 确认工程的统一编码. 例如UTF-8 , project->properties->text file encoding 选择  UTF-8 2 JSP统一编码. 打开JSP文件: 以下都是要关注的地方. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> response.setCharacter

PHP MYSQL读取中文乱码的解决办法

其他试了很多种办法,结果最直接最简单的办法就是在SELECT前先发送设置.如下 mysqli_query($con,"SET NAMES 'UTF8'"); mysqli_query($con,"SET CHARACTER SET UTF8"); mysqli_query($con,"SET CHARACTER_SET_RESULTS=UTF8'");  $result = mysqli_query($con,$querySql);

关于Androdi中SQLITE 3采用GBK编码存储,数据库中文乱码问题。

1.最近开发一个项目,用SQLite Expert Personal打开数据库如下图,title会产生乱码,问题. 2.由于SQL lite默认是存储UTF-8格式,后来更改数据库编码类型为ANSI,依据操作系统,本地ANSI为GB2312格式,查看发现编码格式正常. 3.用Android程序读取,采用以下方式,可以完整读取出中文字符. Product pr=new Product(); //解决中文乱码问题 byte[] val = cursor.getBlob(cursor.getColum

C#中StreamReader读取中文时出现乱码问题总结

之前有一篇文章" C#读取及写入配置文件教程"(http://blog.csdn.net/lisenyang/article/details/47291083)当中有一个问题就是在读取配置文件时候中文出现乱码情况.这是为什么呢?原因是自Windows 2000之后的操作系统在文件处理时默认编码採用Unicode.所以.NET文件的默认编码也是Unicode.除非另外指定,StreamReader的默认编码为Unicode,而不是当前系统的ANSI代码页.可是文档大部分还是以ANSI编码

FileReader读取中文txt文件编码丢失问题(乱码)(转)

有一个UTF-8编码的文本文件,用FileReader读取到一个字符串,然后转换字符集:str=new String(str.getBytes(),"UTF-8");结果大部分中文显示正常,但最后仍有部分汉字显示为问号! public static List<String> getLines(String fileName){ List<String> lines=new ArrayList<String>(); try { BufferedRead