2017-06-21 16 views
2
用繩子 多納€™噸

保存對象做通過ServiceStack和OrmLite到MySQL。編碼問題,當保存字符串「多納€™噸做」由ServiceStack和Ormlite到MySQL

將該字符串更改爲但是不要在MySQL中執行

如果我讀從MySQL的價值,再次保存,然後得到Donâ€ââ€ZA¢做T它

它只是發生一個Windows服務器2016上使用.net 4.62,它可以在其他Windows上使用.net 4.62和帶有Mono的OSX正常工作。

ServiceStack庫版本是「4.5.0」; MySQL版本是5.6.23;數據庫表和字符集是UTF-8。

它可能在某處做了錯誤的編碼轉義並重復一遍又一遍。我最近從.net 4.5升級到4.62。

我無法調試它:它適用於開發MAC和測試Windows;它只在生產環境中失敗。

+0

這就是所謂的「雙重編碼」。即使是「三重編碼」。您重複將字節視爲latin1,然後轉換爲utf8。 –

回答

2

該問題已經整理出來:

它來自MySQL連接字符串。我們最近添加了「ConnectionReset = True;」,這引發了這種編碼問題。

它會將UTF-8字符串轉換爲西文1252編碼讀取;所以’將顯示爲¢?€央行「¢,等等

它能夠再現另一個Windows服務器上。

將其設置爲false或將其刪除後;它固定。