Ещё фишка (недавний дамп)
Код: Выделить всё
Universal transformation format 8 bits; UTF-8
Doubly-encoded to UTF-8 from CP1251
И я пока не могу привести дамп к читаемому виду.
зПЗБ -- UTF8
п╥п÷п≈п▒ -- koi8r
Гога -- на самом деле
Добавлено спустя 10 минут 36 секунд:
(у меня koi8-r)
Код: Выделить всё
>echo Гога | iconv -f cp1251 -t utf8
п╥п÷п≈п▒
Код: Выделить всё
>echo Гога | iconv -f koi8-r -t utf8
п⌠п╬пЁп╟
Добавлено спустя 2 часа 41 минуту 31 секунду:
Ой, робяты! Ого! Шо я сделал!
Короче. MySQL 4.1
Скачал дамп.
"Расшифровал" (весь текст был koi8r, phpMyAdmin думал, что cp1251, да ещё перекодировал в utf8)
Перекодировал в 100% koi8r.
Везде в дампе заменил cp1251 на koi8r (напр., CHARACTER SET)
Осталось импортировать... но как? Файл офигенного размера, ни сам phpBB, ни phpMyAdmin (с большим memory_limit) не смогли. А до завтра ждать не охота.
Ладно. На своём домашнем компе я этот файл разбил на кусочки, причём не абы как, а по несколько (по 200, вроде) SQL запросов.
Закачал все кусочки (327) по FTP на сервер.
И, открывая эти кусочки в нужном порядке, импортировал всё 8)
И ничего не изменилось.... (проблемы с сортировкой, phpMyAdmin тарабарщину даёт ту же самую). Потому что по дефолту соединение устанавливается в cp1251 (у нас же все веб-мастера виндузятники)
Ладненько, думаю.
Перед командами импорта пишу:
Код: Выделить всё
mysql_query("SET NAMES koi8r") or die(mysql_error());
mysql_query("SET CHARACTER SET koi8r") or die(mysql_error());
Повторяю импорт... мама! теперь на форуме тарабарщина...
Ну, мля, думаю...
В
includes/db.php (методом грубой силы, без финтов):
После
Код: Выделить всё
// Make the database connection.
$db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
if(!$db->db_connect_id)
{
message_die(CRITICAL_ERROR, "Could not connect to the database");
}
Пишу:
И опа! Всё орбайт! Сортировка на месте, голова на месте
Гога писал(а):Я не вижу в исходника phpBB, чтобы он трепыхался на этот счёт, типа
Теперь вижу
Добавлено спустя 2 минуты 11 секунд:
Вот код для разбивки (выдран из админки изначально):
Код: Выделить всё
<?php
include('./includes/sql_parse.php');
$backup_file_tmpname = '/var/www/htdocs/forum.svn/trunk/babel.sql';
$sql_query = fread(fopen($backup_file_tmpname, 'r'), filesize($backup_file_tmpname));
if($sql_query != "")
{
// Strip out sql comments...
$sql_query = remove_remarks($sql_query);
$pieces = split_sql_file($sql_query, ";");
$sql_count = count($pieces);
$j=0;
$out=fopen("./tmp/$j.sql", 'w');
for($i = 0; $i < $sql_count; $i++)
{
if (!($i % 200))
{
echo "Ok: $j\n<br>";
$j++;
fclose($out);
$out=fopen("./tmp/$j.sql", 'w');
};
$sql = trim($pieces[$i]);
fwrite($out, "$sql;\n\n");
}
}
echo "Ok: $j";
fclose($out);
?>
А это для импорта:
Код: Выделить всё
<?php
include('config.php');
include('./includes/sql_parse.php');
mysql_connect($dbhost,$dbuser,$dbpasswd) or die("Oops!");
mysql_select_db($dbname) or die(mysql_error());
$fcount = 327;
mysql_query("SET NAMES koi8r") or die(mysql_error());
mysql_query("SET CHARACTER SET koi8r") or die(mysql_error());
for ($f = 1; $f <= $fcount; $f++)
{
$filename_tmpl = "./tmp/$f.sql";
echo "$filename_tmpl<br>";
$in = fopen($filename_tmpl, 'r');
$sql_query = fread($in, filesize($filename_tmpl));
fclose($in);
if($sql_query != "")
{
// Strip out sql comments...
$sql_query = remove_remarks($sql_query);
$pieces = split_sql_file($sql_query, ";");
$sql_count = count($pieces);
for($i = 0; $i < $sql_count; $i++)
{
$sql = trim($pieces[$i]);
mysql_query("$sql") or die(mysql_error());
}
}
}
?>
Добавлено спустя 3 часа 9 минут 16 секунд:
Ещё после этих манипуляций таблицы поиска раскорячило (???)
Пришлось скоропостижно ставить reindex_mod и приводить их в порядок.
Получилось