通过 ServiceStack 和 OrmLite 将带有字符串的对象不要这样做保存到 MySQL。
字符串在 MySQL 中更改为 Don't do it。
如果我从 MySQL 读取值并再次保存,则得到Don't do it
它只发生在一台带有 .net 4.62 的 Windows Server 2016 上,它可以在其他带有 .net 4.62 的 Windows 和带有 Mono 的 OSX 上正常工作。
ServiceStack库版本是“4.5.0”; MySQL版本为5.6.23;数据库表和列的字符集均为UTF-8。
可能在某个地方进行了错误的编码转义并一次又一次地重复。我最近从 .net 4.5 升级到 4.62。
我无法调试它:它可以用于开发MAC,并测试Windows;仅在生产环境中失败。
最佳答案
问题已解决:
它来自 MySQL 连接字符串。我们最近添加了触发此编码问题的“ConnectionReset=True;”。
它将转换 UTF-8 字符串以将其读取为 Western 1252 编码;因此 ’ 将显示为 ââ‚â„„,依此类推
它能够在另一台 Windows 服务器上重现。
设置为 false 或删除后;已修复。
关于mysql - ServiceStack和Ormlite保存字符串 "Don’t do it"到MySQL时的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44665319/