Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改对象列表的编码_C#_Mysql_Sql Server_Character Encoding_Dapper - Fatal编程技术网

C# 更改对象列表的编码

C# 更改对象列表的编码,c#,mysql,sql-server,character-encoding,dapper,C#,Mysql,Sql Server,Character Encoding,Dapper,我有一个程序,它使用Dapper从SQL Server读取数据,然后将数据保存到另一个MySQL数据库中。它正在做的是: 以对象列表的形式从SQL server读入数据,例如list=从SQL server读入数据 打开到MySQL的连接,保存列表 问题是AKindOfObject的某些属性在原始数据库中保存为中文。当数据传输到MySQL数据库时,这些汉字显示为“?” 有没有办法将List的编码更改为C#code中的gb2312?我怀疑这里发生的事情很简单:您的数据库有非unicode列,并且您

我有一个程序,它使用Dapper从SQL Server读取数据,然后将数据保存到另一个MySQL数据库中。它正在做的是:

  • 以对象列表的形式从SQL server读入数据,例如
    list=
    从SQL server读入数据
  • 打开到MySQL的连接,保存
    列表
  • 问题是
    AKindOfObject
    的某些属性在原始数据库中保存为中文。当数据传输到MySQL数据库时,这些汉字显示为“?”

    有没有办法将
    List
    的编码更改为C#code中的gb2312?

    我怀疑这里发生的事情很简单:您的数据库有非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中工作。

    问题可能不在您的C代码中,而是在MySQL数据库配置中。您是否能够使用insert语句将中文字符手动插入MySQL数据库的相关列中?