求助:c#读取sqlite数据,中文如何处理?

kcwjtklgx 2018-09-21 02:43:55

using system.data.sqlite;


string aa="data source=d:\\dbpess.db3;Version=3;"
SQLiteConnection m_db3;
m_db3=new sqliteconnection(aa);
string sqlstr="select * from alarm";
sqlitecommand cmd=new sqlitecommand(sqlstr,m_db3);
sqlitedataadapter da=new sqlitedataadapter(cmd);
dataset ds=new dataset();
da.fill(ds,"alarm");
数据读过来了,但有些字段的值是中文的,全是乱码,请教大师如何处理?
...全文
1188 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnFUCKINGSUCKS 2018-10-17
  • 打赏
  • 举报
回复
引用 12 楼 kcwjtklgx 的回复:
[quote=引用 4 楼 yenange 的回复:] 发到云盘共享,帮你看下
https://yunpan.360.cn/surl_ymjvhVRKbtN (提取码:4053)[/quote] 过期了
SinGooCMS 2018-10-17
  • 打赏
  • 举报
回复
SqlSugar 了解下
Tiny~ 2018-10-12
  • 打赏
  • 举报
回复
我也用sqlite,不过从来没碰到过中文乱码的问题,也并没有做啥特别的设置
吉普赛的歌 2018-09-29
  • 打赏
  • 举报
回复
SqliteHelper
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Util;

namespace ConsoleApp17
{
    class Program
    {
        static void Main(string[] args)
        {
            string connString = @"Data Source=F:\MyDocuments\Downloads\DbPess.db3;Version=3;Cache Size=2000;Pooling=True;Max Pool Size=5;";
            string sql = @"SELECT Desc FROM Mesge limit 1";
            string str = SQLiteHelper.ExecuteScalar(connString, sql).ToString();
            Console.WriteLine(str);

            foreach (EncodingInfo eInfo in Encoding.GetEncodings())
            {
                Encoding ec = Encoding.GetEncoding(eInfo.Name);
                byte[] btArr = ec.GetBytes(str);
                string strBuffer = Encoding.Default.GetString(btArr);
                Console.WriteLine(eInfo.Name+"--->>"+strBuffer);
            }

            Console.Read();
        }
    }
}
试了所有的编码, 都不行。
吉普赛的歌 2018-09-29
  • 打赏
  • 举报
回复
引用 17 楼 sp1234 的回复:
对于 SQL Server 数据库系统来说,不管现在什么版本的数据库系统,微软都统一用 unicode。这就是有先见之明。所以你在过程中往往要写
update ABC set field_a=N'张三' where Id='8q8wwreqasd'
这样的代码中写大写字母N,来告诉数据库系统不管客户端用什么字符集,你都要让数据接受了不同字符集的命令消息之后,使用 unicode 来更新数据库。 但是许多小的数据库系统,把责任推给了程序员。你必须改变客户端程序的字符集,而不能用你客户端程序默认地字符集方式,来发送 sql 命令。
P哥还是漏了点东西, SQL Server 跟 MySQL 一样, 也有类似字符集的问题, 不过不叫字符集, 叫排序规则。 只有采用 nvarchar, nchar, ntext 这些类型的, 才能在不同操作系统下通用不出现乱码。
mirrorspace 2018-09-28
  • 打赏
  • 举报
回复
保证VS 代码文件都是UTF-8编码. SQLITESTUDIO也是UTF-8的. 这样中文写进去不会乱码,C#读出来后.发到网页上或者控制台中,都正确显示
iiihavedone 2018-09-28
  • 打赏
  • 举报
回复
乱码了有没有试着自己处理一下
  • 打赏
  • 举报
回复
那就可能是别人的东西创建的数据库,原本的字符集设置就跟你的客户端默认字符集不一致。
  • 打赏
  • 举报
回复
对于 SQL Server 数据库系统来说,不管现在什么版本的数据库系统,微软都统一用 unicode。这就是有先见之明。所以你在过程中往往要写
update ABC set field_a=N'张三' where Id='8q8wwreqasd'
这样的代码中写大写字母N,来告诉数据库系统不管客户端用什么字符集,你都要让数据接受了不同字符集的命令消息之后,使用 unicode 来更新数据库。 但是许多小的数据库系统,把责任推给了程序员。你必须改变客户端程序的字符集,而不能用你客户端程序默认地字符集方式,来发送 sql 命令。
kcwjtklgx 2018-09-28
  • 打赏
  • 举报
回复
引用 13 楼 sp1234 的回复:
许多数据库系统,例如 MySql 或者 Sqlite 之类的,需要设置数据库端的字符集。假设数据库端设置跟 .net 程序默认的 unicode 字符集不一致,那么必然胡乱返回结果。

。db3文件别人生成的文件,我从别人的东西里获取数据
  • 打赏
  • 举报
回复
假如你使用古老的控制台处理方式,或者古老的版本的 ms c 程序,那么你可以可能使用 ANSI 字符集。而假设你使用.net 或者甚至是 vb5、vb6编程那么你使用的是 unicode 字符集,在跟数据库通讯。 请记住这个基本概念。
  • 打赏
  • 举报
回复
许多数据库系统,例如 MySql 或者 Sqlite 之类的,需要设置数据库端的字符集。假设数据库端设置跟 .net 程序默认的 unicode 字符集不一致,那么必然胡乱返回结果。
kcwjtklgx 2018-09-28
  • 打赏
  • 举报
回复
引用 4 楼 yenange 的回复:
发到云盘共享,帮你看下

https://yunpan.360.cn/surl_ymjvhVRKbtN (提取码:4053)
sdfgrtyu 2018-09-28
  • 打赏
  • 举报
回复
引用 7 楼 kcwjtklgx 的回复:
[quote=引用 3 楼 u010941149 的回复:]
直接用ef啊,连sql语句都不用写了

ef是啥?能给个例子吗?[/quote]
Entity framework啊。使用非常方便
吉普赛的歌 2018-09-28
  • 打赏
  • 举报
回复
引用 8 楼 kcwjtklgx 的回复:
[quote=引用 4 楼 yenange 的回复:] 发到云盘共享,帮你看下
云盘共享咋发?没用过[/quote] 百度网盘都没用过吗?
kcwjtklgx 2018-09-28
  • 打赏
  • 举报
回复
引用 5 楼 x15037308498 的回复:
乱码了有没有试着自己处理一下

试过转GB2312等,转了还是乱码?
kcwjtklgx 2018-09-28
  • 打赏
  • 举报
回复
引用 4 楼 yenange 的回复:
发到云盘共享,帮你看下

云盘共享咋发?没用过
kcwjtklgx 2018-09-28
  • 打赏
  • 举报
回复
引用 3 楼 u010941149 的回复:
直接用ef啊,连sql语句都不用写了

ef是啥?能给个例子吗?
吉普赛的歌 2018-09-27
  • 打赏
  • 举报
回复
发到云盘共享,帮你看下
sdfgrtyu 2018-09-27
  • 打赏
  • 举报
回复
直接用ef啊,连sql语句都不用写了
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧