我有使用小巧玲珑从SQL Server数据读出,然后将数据保存到另一个MySQL数据库的程序。 它是什么做的是:
- 读取来自SQL Server作为对象的列表数据,如
List<AKindOfObject> =
从SQL Server数据读取 - 打开到MySQL的连接,保存
List<AKindOfObject>
问题是一些特性AKindOfObject
在原始数据库保存为中国人。 当数据被转移到MySQL数据库,这些中国的字符显示为“?”。
有没有什么办法的编码改变List<AKindOfObject>
为GB2312的C#代码?
我怀疑这里发生的一切很简单:你的数据库中有非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工作。