我有一个运行在PHP 5上的应用程序,使用 mysqli 扩展访问和存储MySQL数据库。该数据库包含许多表格,其编码为 UTF-8 (排序 utf8_swedish_ci )。
不幸的是,似乎mysqli连接被配置为使用ISO-8859-1编码所有内容,这意味着我有 UTF-8 表包含 latin1 数据。我现在正试图通过将所有内容转移到UTF-8(应该是!)来修复它。
是否有内置的处理方式?如果没有,你会如何建议我解决这个问题?
编辑:使用PHPMyAdmin浏览数据时的数据样本:
handelë
(应为handelë
)
√skal
(应为√skal
)
此外,数据在HTML文档中正确输出,只要我使用输出编码UTF-8,但将mysqli连接字符集保持为latin1。这一切都相当令人困惑,。
非常感谢你的帮助!
答案 0 :(得分:5)
用户界面(UTF-8)→控制器(UTF-8)→型号(ISO-8859-1)→数据库(UTF-8,但它接收ISO-8859-1)
因此,字段配置为使用UTF-8编码,但它们接收ISO-8859-1编码数据。我想将错误编码的数据转换为UTF-8。
由于数据实际上是ISO-8559-1编码,我解决了我的问题与以下小MySQL“hack”:
UPDATE `table` SET `column` = convert(cast(convert(`column` using latin1) as binary) using utf8)
在StackOverflow上提供ABS。
感谢您抽出时间调查我的问题,伙计们! :)