2017-06-21 17 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或将其删除后;它固定。