Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Alterar a codificação de uma lista de objetos


Eu suspeito o que está acontecendo aqui é simplesmente:seu banco de dados tem colunas não-unicode e você está tentando armazenar dados unicode. Personagens irrepresentáveis ​​serão de fato gregos. A correção correta é:verifique se sua coluna é unicode. Mexer com codificações de coluna poderia funciona, mas droga isso é muito trabalho comparado ao uso de unicode.

Dapper passa as coisas "como estão" para o ADO.NET; o que o provedor faz depende do provedor. Existe uma maneira de dizer para escolher entre ANSI e Unicode ao enviar dados para o banco de dados, porém - via DbString , ou seja
conn.Execute(sql, new {
    id, name,
    desc = new DbString { IsAnsi = true, Value = desc }
});

Isso também permite que você controle o comprimento etc. No entanto, não estamos controlando a codificação aqui; a codificação geralmente é uma propriedade do próprio banco de dados ou do provedor. Se o MySQL tem algumas maneiras personalizadas de controlar isso no ADO.NET, sou "todo ouvidos", mas primeiro:você precisa fazê-lo funcionar no ADO.NET bruto.