ServiceStack 和 Ormlite 将字符串 "Don’t do it" 保存到 MySQL 时出现编码问题

Encoding issue when save string "Don’t do it" by ServiceStack and Ormlite to MySQL

用 ServiceStack 和 OrmLite 不要这样做 将对象保存到 MySQL.

字符串更改为 Don’t do it in MySQL.

如果我从 MySQL 中读取值并再次保存,则得到 不要这样做

它只发生在一个 Windows server 2016 with .net 4.62,它在其他 Windows with .net 4.62 和 OSX with Mono 上正常工作。

ServiceStack 库版本为“4.5.0”; MySQL版本为5.6.23;数据库 table 和列字符集是 UTF-8。

可能是某处编码转义错误,反复出现。我最近从 .net 4.5 升级到 4.62。

我无法调试它:它在开发 MAC 和测试 Windows 上工作;只在生产环境失败了

问题已解决:

它来自 MySQL 连接字符串。我们最近添加了触发此编码问题的“ConnectionReset=True;”。

它将一个UTF-8字符串转换为Western 1252编码读取;所以 ' 将显示为 ’,依此类推

它能够在另一个 Windows 服务器上复制。

设置为false或移除后;它修复了。