对象列表的变化编码(Change encoding of a list of objects)

2019-10-21 10:26发布

我有使用小巧玲珑从SQL Server数据读出,然后将数据保存到另一个MySQL数据库的程序。 它是什么做的是:

  1. 读取来自SQL Server作为对象的列表数据,如List<AKindOfObject> =从SQL Server数据读取
  2. 打开到MySQL的连接,保存List<AKindOfObject>

问题是一些特性AKindOfObject在原始数据库保存为中国人。 当数据被转移到MySQL数据库,这些中国的字符显示为“?”。

有没有什么办法的编码改变List<AKindOfObject>为GB2312的C#代码?

Answer 1:

怀疑这里发生的一切很简单:你的数据库中有非Unicode列,和你想存储Unicode数据。 不可表示的字符确实将灰度条。 正确的修改有:确保你的列是unicode。 与列编码梅辛可以工作,但该死的 ,这是一个大量的工作相比,只是使用Unicode。


dapper中传递的东西“原样”到ADO.NET; 什么提供商做的是最多的供应商。 一种方法来告诉它发送数据数据库时,ANSI和Unicode之间进行选择,虽然-通过DbString ,即

conn.Execute(sql, new {
    id, name,
    desc = new DbString { IsAnsi = true, Value = desc }
});

这也可以让你控制长度等。然而,我们在这里不控制编码 ; 编码通常是数据库本身,或供应商的的属性。 如果MySQL具有控制在ADO.NET的一些定制的方式,我是“洗耳恭听”,但首先:你需要得到它在原始ADO.NET工作。



文章来源: Change encoding of a list of objects