2017-06-21 2 views
2

speichern Objekt mit String Donâ € ™ t tun es von ServiceStack und OrmLite zu MySQL.Encoding Problem beim Speichern string "Donâ € ™ t do it" von ServiceStack und Ormlite zu MySQL

Die Zeichenfolge geändert Donà ¢ Â'¬â „¢ t tun es in MySQL.

Wenn ich den Wert von MySQL lesen und wieder speichern, dann bekommen Donà¢ à ¢ â € ¢ â € šÂ¬Ã Za ¢ t tun es

Es geschah nur auf einem Windows-Server 2016 mit .net 4.62 funktioniert es unter Windows mit .net 4.62 und OSX mit Mono einwandfrei.

Version der ServiceStack-Bibliotheken ist "4.5.0"; MySQL-Version ist 5.6.23; Die Datenbanktabelle und der Spaltenzeichensatz sind UTF-8.

Es kann irgendwo sein, die falsche Codierung Flucht und wiederhole es immer wieder. Ich habe kürzlich von .net 4.5 auf 4.62 aktualisiert.

Ich kann es nicht debuggen: es arbeitet an der Entwicklung von MAC und Windows testen; Es ist nur in der Produktionsumgebung fehlgeschlagen.

+0

Das wird "Doppelcodierung" genannt. Sogar "Dreifach-Codierung". Sie behandeln die Bytes wiederholt als latin1 und konvertieren sie dann in utf8. –

Antwort

2

Das Problem wird aussortiert:

Es ist aus der MySQL-Verbindungszeichenfolge. Wir haben vor kurzem den "ConnectionReset = True;" hinzugefügt, der dieses Kodierungsproblem ausgelöst hat.

Es konvertiert eine UTF-8-Zeichenfolge, die als Western 1252-Codierung gelesen werden soll; so ein â € ™ als à ¢ â, ¬ â „¢, werden angezeigt und so weiter

Es ist in der Lage auf einem anderen Windows Server zu reproduzieren.

Nach dem Einstellen auf false oder entfernen Sie es; es wurde behoben.

Verwandte Themen