我有一个来自客户的mysqldump错误的元音。 这是一个备份,我没有新的。
例如,而不是ü有ü,而不是ö有ö。
要解决此问题,我可以在记事本中进行搜索和替换吗?或者我可以使用全局搜索和替换来破坏除tt_content或页面之外的其他表吗?
答案 0 :(得分:3)
我通过使用不同的charset配置导出和导入解决了这个问题。 只需在本地开发服务器上导入现有的mysql转储,然后尝试导出/导入,如下所示。 创建一个新的mysql转储并尝试一些设置,如:
mysqldump --default-character-set=latin1 --skip-set-charset --skip-extended-insert --skip-add-drop-table --no-create-info -u [USERNAME] -p [DBNAME] > [MYSQLDUMNAME].sql
使用以下设置导入新创建的mysql转储:
mysql --default-character-set=utf8 -u [USERNAME] -p [DBNAME] < [MYSQLDUMNAME].sql
您需要进行一些测试,以找出正确的转换(latin1,utf8)。
如果你的mysql转储中混合了正确和错误的字符,你可能会排除这些表,并将它们分开导入,如:
mysqldump --default-character-set=latin1 --skip-set-charset --skip-extended-insert --add-drop-table --ignore-table=[DBNAME].[TABLENAME] -u [USERNAME] -p [DBNAME] > [MYSQLDUMNAME].sql
将[USERNAME],[DBNAME],[TABLENAME],[MYSQLDUMNAME]替换为您的值。
答案 1 :(得分:1)
这主要是由用于转储备份的错误编码设置引起的(例如,当数据库在cp-1252中时,与utf-8中的服务器通信)。如果您可以获取用于创建它的设置,则可以使用相同的设置在本地计算机上正确导入它,并创建一个具有正确设置的新转储来修复它。
您可以尝试使用搜索替换来修复它,但是您可能会错过很多符号,除非它实际上是小转储,您可以事后用手完全检查它。
答案 2 :(得分:1)
查看以下TYPO3Wiki条目。以下是一些描述如何将数据转换为utf8的方法: