【发布时间】:2013-08-04 11:46:06
【问题描述】:
我有一个在 PHP 5 上运行并使用 mysqli 扩展名访问和存储 MySQL 数据库的应用程序。该数据库包含许多编码为 UTF-8 的表(排序规则 utf8_swedish_ci)。
不幸的是,mysqli 连接似乎被配置为使用 ISO-8859-1 对所有内容进行编码,这意味着我有包含 latin1 的 UTF-8 表数据。我现在正在尝试通过将所有内容转换为 UTF-8 来修复这个问题(应该是这样!)
有没有内置的方法来处理这个问题?如果没有,你会建议我如何处理这个问题?
编辑:使用 PHPMyAdmin 浏览所有数据时的数据样例:
handelë(应该是handelë)
√skal(应该是√skal)
另外,数据在HTML文档中是正确输出的,只要我使用输出编码UTF-8,但保持mysqli连接字符集为latin1。这一切都相当混乱,。
非常感谢您的帮助!
【问题讨论】:
-
试试
utf8_general_ci -
如何在不破坏所有内容的情况下转换数据?
-
如果它确实损坏了一切,你可以在桌子上做一个
REPAIR。 (我对字符集的工作不多,但我只给了我 2 美分) -
在此之前和之后创建 I 备份(出于安全考虑):
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -
对表格也这样做:
ALTER TABLE db_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
标签: php mysql character-encoding utf8-decode