Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Codierung einer Liste von Objekten ändern

Ich vermute Was hier passiert, ist einfach:Ihre Datenbank enthält Nicht-Unicode-Spalten, und Sie versuchen, Unicode-Daten zu speichern. Nicht darstellbare Charaktere werden tatsächlich griechisch dargestellt. Die richtige Lösung ist:Stellen Sie sicher, dass Ihre Spalte Unicode ist. Das Herumspielen mit Spaltenkodierungen könnte Arbeit, aber verdammt das ist eine Menge Arbeit im Vergleich zur Verwendung von Unicode.

Dapper übergibt Dinge "wie sie sind" an ADO.NET; Was der Anbieter tut, ist Sache des Anbieters. Es gibt eine Möglichkeit, es anzuweisen, zwischen ANSI und Unicode zu wählen, wenn Daten in gesendet werden die Datenbank, aber - über DbString , also

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

Dadurch können Sie auch die Länge usw. steuern. Wir kontrollieren jedoch nicht die Codierung hier; Die Kodierung ist normalerweise eine Eigenschaft der Datenbank selbst oder des Anbieters. Wenn MySQL einige maßgeschneiderte Möglichkeiten hat, dies in ADO.NET zu steuern, bin ich "ganz Ohr", aber zuerst:Sie müssen es in rohem ADO.NET zum Laufen bringen.