乱码问题终于解决。
由于之前用了System.Data.SQLite在linux中出现dllnotfound错误。
网上搜索了一下,似乎在linux下不能使用该dll。
于是开始使用odbc,噩梦也因此开始。
乱码问题始终无法解决。
当中使用了多种方法,在我几乎要放弃的时候,
多亏了linuxdotnet及时的回复。
最后发现一切罪恶的根源都是odbc。
最大的收获,就是学会了解决乱码的办法。
对于web应用,不出现乱码的办法,就是数据库,网页,web.config
三者的编码要统一,比如全使用utf8编码。
详细的方法可以参照
http://www.linuxdot.net/bbsfile-1845
但在使用Mono.Data.Sqlite时,也不是一帆风顺。
主要是经常出现找不到sqlite3的dll,以及无法打开数据库或提示数据库已被加密的问题。
解决办法,如果你是在windows,则要将sqlite3.dll复制到网站的bin目录下
注意,是无法添加引用的,要直接复制。
在linux下,则要将sqlite-3.6.7.so复制到网站的bin目录下。
上面的dll和so都可以在www.slqite.org下载。
其实,我是一早知道mono可以直接连接sqlite,但一直没想到linux下还会有dll。以为都是so。
而我之前打算是在windows下开发的,所以以为无法引用so。
没想到linux安装mono后,在/usr/lib/mono/gac/Mono.Data.Sqlite/2.0.0.0__0738eb9f132ed756
和/gac/Mono.Data.SqliteClient/2.0.0.0__0738eb9f132ed756有相关的dll。
因此可以直接复制到bin目录下,用windows开发工具进行开发。
按照官方的说法,连接有两种方式,一种是Data Source方式,一种是URI方式。
我用Data Source方式始终连接不上,反而URI可以连的上。当中有些是看不太明白的
The format of the connection string is:
[1.1 profile and the old assembly]
URI=file:/path/to/file
[2.0 profile in the new assembly]
Data Source=file:/path/to/file
Data Source=|DataDirectory|filename
The latter case for the 2.0 profile references the App_Data directory (or any other directory that's configured to contain data files for an ASP.NET 2.0 application)
profile在这里不知何解,因为我就是用的1.1的连接方式。也就是URI的方式。而我引用的dll是2.0版本的。
最后,再次感谢linuxdotnet社区对我的帮助与支持。