Я пытаюсь импортировать большой файл SQL; создается mysqldump на одном сервере, а затем конвертируется с помощью iconv; используя эти команды:
$ mysqldump -uxxx -p xxx > data.sql
$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT data.sql data.iconv.sql
Я заметил, что "\ x91" в базе данных превратился в "\ xc3 \ x82 \ xc2 \ x91" в дампе, потому что mysqldump пытается преобразовать все в utf-8. Я преобразовал его обратно в "\ x91" с помощью iconv. Если я не преобразую их, они будут «\ xc2 \ x3f» на новом сервере; вместо того, чтобы просто \ x3f, как у нас сейчас.
Итак, как уже было сказано, есть некоторые символы, уникальные для кодировки cp1252, например "\ x91" и "\ x92". Оба эти символа превратились в "\ x3f" в новой базе данных; это команда, которую я использую для импорта:
$ /opt/mysql5/bin/mysql -uxxx -p -Dxxx < data.iconv.sql
Кто-нибудь знает, как это могло произойти и что делать, чтобы предотвратить это? Зная это, я смогу перенести данные точно так, как это было.
Дополнительная информация:
Я использовал этот источник для iconv-вещей. Как вы можете видеть, на этой странице еще один человек имел проблемы с cp1252; может быть в этом причина.
Версия сервера:
old-host: Ver 10.10 Distrib 5.0.18, для pc-linux-gnu (i486)
new-host: Ver 10.11 Distrib 5.0.51, для pc-linux-gnu (i686)