2013-08-04 81 views
2

我有一个应用程序在PHP 5上运行,并使用mysqli扩展访问和存储MySQL数据库。该数据库包含许多编码为UTF-8(排序规则utf8_swedish_ci)的表格。MySQL转换字符集问题

不幸的是,它似乎mysqli的连接配置为使用编码ISO-8859-1的一切,这意味着我已经得到了含LATIN1数据UTF-8表。我正试图通过将所有内容转移到UTF-8来进行修复(因为它应该是!)

有没有内置的方法来处理这个问题?如果没有,你会如何建议我处理这个问题?


编辑:什么样的数据看起来像同时通过它的所有浏览使用phpMyAdmin样本:

handelë(应该是handelë

​​(应为√skal

此外,数据在HTML文档中输出正确,只要我使用输出编码UTF-8,但保持我的sqli连接字符集为latin1。这一切都相当混乱。

非常感谢您的帮助!

+0

尝试'utf8_general_ci' –

+0

如何转换数据而不破坏所有内容? – Leonard

+0

如果确实发生了腐败事件,你可以在桌子上做一个'REPAIR'。 (我没有用过多的字符集,但我只是给我2美分) – 1234567

回答

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) 

礼貌ABS

谢谢你的时间,看看我的问题,伙计们! :)