sql >> Base de Datos >  >> RDS >> Mysql

Cambiar la codificación de una lista de objetos

sospecho lo que está sucediendo aquí es simplemente:su base de datos tiene columnas que no son Unicode y está tratando de almacenar datos Unicode. De hecho, los personajes irrepresentables serán griegos. La solución correcta es:asegúrese de que su columna sea unicode. Jugar con codificaciones de columnas podría trabajo, pero maldita sea eso es mucho trabajo en comparación con solo usar unicode.

Dapper pasa las cosas "tal cual" a ADO.NET; lo que hace el proveedor depende del proveedor. Hay es una forma de indicarle que elija entre ANSI y Unicode al enviar datos a la base de datos, sin embargo, a través de DbString , es decir,

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

Esto también le permite controlar la longitud, etc. Sin embargo, no estamos controlando la codificación aquí; la codificación suele ser una propiedad de la propia base de datos o del proveedor. Si MySQL tiene algunas formas personalizadas de controlar eso en ADO.NET, soy "todo oídos", pero primero:debe hacer que funcione en ADO.NET sin procesar.