我有一个 Mysql 数据库,所有表都整理为“utf8_unicode_ci”。此外,我使用 php 写入数据库的所有数据都以 utf8 编码。但是我忘记将mysql连接编码设置为utf8,所以它可能默认为ISO-8859。
很长一段时间,这都不是问题。尽管特殊字符在 phpMyAdmin 等工具中显示错误,但在将其加载到我的 php 应用程序时数据是正确的,只要我一直使用错误的连接编码。
但是现在我需要从另一个应用程序中使用我的数据库,该应用程序(正确地)不使用 ISO-8859 作为连接编码并且会损坏特殊字符。
现在我想转换我的数据库,以便我可以使用正确的连接编码。
我已经试过了: mysql错误的连接编码
但我对我没有帮助。我最接近解决方案的是'ut8_decode(utf8_decode($data))'。但这会破坏以特殊字符开头的字段。
附加信息:
那么可能会发生以下情况:
我的应用程序将一些 utf8 数据发送到数据库。
Mysql 获取数据但认为(由于连接编码)它不是 utf8,并将其转换为适合 'utf8_unicode_ci' 排序规则。
当我的 php 应用程序从数据库中读取数据时,mysql 似乎撤消了先前的转换,因此从我的 php 应用程序中一切看起来都很好。