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