MySQL转换charset问题

Leo*_*ard 2 php mysql character-encoding utf8-decode

我有一个运行在PHP 5上的应用程序,使用mysqli扩展访问和存储MySQL数据库.该数据库包含许多表格,编码为UTF-8(collat​​ion utf8_swedish_ci).

不幸的是,似乎mysqli连接被配置为使用ISO-8859-1编码所有内容,这意味着我有包含latin1数据的UTF-8表.我现在试图通过将所有内容转换为UTF-8来修复此问题(应该是这样!)

有没有内置的处理方式?如果没有,你会如何推荐我解决这个问题?


编辑:使用PHPMyAdmin浏览所有数据时的数据示例:

handelë(应该handelë)

√skal(应该?skal)

此外,数据在HTML文档中正确输出,只要我使用输出编码UTF-8,但将mysqli连接字符集保持为latin1.这一切都相当令人困惑.

非常感谢您的帮助!

Leo*_*ard 5

行!所以这是必然发生的事情:

用户界面(UTF-8)→控制器(UTF-8)→型号(ISO-8859-1)→数据库(UTF-8,但它接收ISO-8859-1)

因此,字段配置为使用UTF-8编码,但它们接收ISO-8859-1编码数据.我想将错误编码的数据转换为UTF-8.

由于数据实际上是ISO-8559-1编码,我解决了我的问题与下面的小MySQL"黑客":

UPDATE `table` SET `column` = convert(cast(convert(`column` using  latin1) as binary) using utf8)
Run Code Online (Sandbox Code Playgroud)

在StackOverflow上提供ABS.

感谢您抽出时间调查我的问题,伙计们!:)