1

我在具有字符编码的 TYPO3 波兰网站之一中遇到了一些问题。配置中没有setDBinit=SET NAMES utf8;设置参数。一切正常(前端和后端),但从数据库导出。当我通过 PhpMyAdmin 搜索数据库或尝试使用数据导出数据库时,所有国际字符都已损坏。

官方页面http://wiki.typo3.org/UTF-8_support#SET_NAMES_utf8.3B说:

没有设置名称 utf8;您的 TYPO3 UTF-8 设置可能有效,但在转换为 UTF-8 后输入的数据库内容可能会将每个国际字符存储为两个单独的乱码 latin1 字符。

如果您使用 phpMyAdmin 检查您的数据库并发现新内容中的变音符号显示为两个乱码,就是这种情况。如果您遇到这种情况,您不能再添加上述语句。您对新内容的输出将被破坏。相反,您必须先更正新添加的特殊字符。只需删除内容、如上所述设置选项并重新输入即可,最容易做到这一点

有没有其他方法可以修复损坏的字符?现在有很多内容要编辑......我几乎尝试了导出编码和转换为另一种编码等的所有组合,但到目前为止我失败了。

4

1 回答 1

4

您可以尝试使用 mysqldump 将 ISO-8859-1 转换为 utf-8:

mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql
chgrep latin1 utf8 dump.sql (or when you prefer  sed -i "" 's/latin1/utf8/g' dump.sql) 
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql
于 2013-10-13T18:50:38.433 回答