Доброго врмени суток всем.
Столкнулся с проблемой: есть файл-дамп базы данных, но в испорченной кодировке. Сайт http://www[dot]artlebedev[dot]ru/tools/decoder/ сказал следующее (кстати, может и неверно!): Преобразование CP1252 -> CP1251.
Проблема осталась только в том, что sql файл весит около 80Мб, что естесственно лишает возможности пользоваться онлайн перекодировщиком.
Решил написать скрипт, открывающий дамп и переводящий все через iconv, но почему то на выходе имею файл с пятью непонятными символами-кракозябрами и все.
Как бы решить эту проблемку?
1. SergeantPEPPER - 12 Февраля, 2009 - 19:57:10 - перейти к сообщению
2. vitaliy_mad - 13 Февраля, 2009 - 01:29:40 - перейти к сообщению
SergeantPEPPER пишет:
но в испорченной кодировке
во первых кодировка испорченной не может быть... она может быть не та что думаете...
Во-вторых: было бы не плохо привести скрипт, который написан для конвертирования...
и наконец: какие нибудь осмысленные данные в киррилице в виде в котором они храняться в файле+под какой стемой работаете(судя о всему Виндовс)... тогда больше шансов получить ответ....
3. Борис84 - 05 Декабря, 2013 - 12:45:25 - перейти к сообщению
Столкнулся с той же проблемой. Причиной данного косяка является то, что для обмена данными между скриптом и базой данных не задана кодировка по-умолчанию или задана, но не та. Задайте utf-8:
$conn = new mysqli ($host, $user, $pass, $db);
// проверка соединения
if (mysqli_connect_errno()) {
printf("<span style=\"color: red;\">Не удалось подключиться: %s</span>\n", mysqli_connect_error());
//echo "<p>".mysqli_connect_errno();
exit();
}
// изменение набора символов на utf8
if (!$conn->set_charset("utf8")) {
printf("Ошибка при загрузке набора символов utf8: %s\n", $conn->error());
} else {
printf("Текущий набор символов: %s\n", $conn->character_set_name());
}
Должно заработать.
$conn = new mysqli ($host, $user, $pass, $db);
// проверка соединения
if (mysqli_connect_errno()) {
printf("<span style=\"color: red;\">Не удалось подключиться: %s</span>\n", mysqli_connect_error());
//echo "<p>".mysqli_connect_errno();
exit();
}
// изменение набора символов на utf8
if (!$conn->set_charset("utf8")) {
printf("Ошибка при загрузке набора символов utf8: %s\n", $conn->error());
} else {
printf("Текущий набор символов: %s\n", $conn->character_set_name());
}
Должно заработать.