Приветствую камрады! Вопрос в чем: имеется база данных mysql, в подключении в скриптах жестко зашит latin1. Сама база в utf8. При попытке экспортировать вместо русских символов непонятные крякозабры. Определялка кодировок показала, что это ISO-8859-1. Ну недолго думая, зайдя покурив StackOverflow применяю: Code: mysqldump --user=$dbuser --password='$dbpass' --host=$dbhost $dbname persons --default-character-set=latin1 > /var/www/".$toDay."_DB_3.sql Далее iconv: Code: iconv -f iso_8859-1 -t utf-8 db_3.sql > db_3_1.sql На выходе опять гумос в виде непонятных цыферок, крякозабр. Сил моих нет, рассчитываю на общий разум.
Сам sql-файл лучше не конвертировать, могут возникнуть проблемы если в дампе присутствуют экранированные символы вида 0xFF. Да и если уж конвертировать то не в iso_8859-1 а в CP1251. Предполагаю, что у тебя простой сайт на пхп. Тогда тебе лучше всего найти в скриптах место, где устанавливается соединение с базой данных. И после соединения выполнить sql-запрос SET NAMES UTF8. Т.е. нужно сделать небольшую правку в php-скриптах. Если есть возможность то залей движок на яндекс-диск, посмотрим что можно сделать.
Я конвертирую не в ISO, я конвертирую из ISO А сайт не мой - шелл. Поэтому и задача - выкачать базу аккуратно. Любые моменты с перекодировкой на стороне mysql базы сразу принесут необратимые последствия и буду "звоночком".
Сам разобрался уже. Поковырял логи mysqldump'a, выяснил, что он его все равно гонит в utf-8, а не в latin1. Перед дампом таблицы charset encoding выставил в принудительный latin1 и прекрасно сдампился. Затем в utf-8 без bom. Все тип-топ. PS: Тут еще целый раздел шелловодов в этих темах сидит и хэш-крякеров и как-никак это форум sec-тематики
Fixed: Code: <?php $toDay = date('d-m-Y'); $dbhost = "**"; $dbuser = "**"; $dbpass = "**"; $dbname = "**"; exec("mysqldump --user=$dbuser --password='$dbpass' --host=$dbhost $dbname tablica --default-character-set=latin1 --extended-insert=FALSE --complete-insert=TRUE > /var/www/l/".$toDay."_pagebreak.sql"); ?>