Shadow
Со старого хостинга дамп получается нормальный? С нормальными русскими буквами? Если да то колебайтесь с новым хостингом, если нет - колебайтесь со старым хостингом, чтобы нормально выгрузило.
Перекодировка базы данных
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
Приветствую! Извиняюсь, если что-то не так скажу....
Прблема заключается в следующем: с помощью Дампера был сделан бэкап базы данных форума (MySQL client version: 3.23.49), после этого было все снесено и залиты новые файлы для установки форума версии 2.0.22. Через phpMyAdmin (2.8.1) все старые таблицы БД были удалены.
Форум установился нормально и полностью фунциклирует.
Пробую восстановить базу данных - все восстанавливается... только появляются иероглифы... т.е. получается, что форум и весь текст самого движка отображается нормально, разделы и топики - "кракозябры". При принудительной смене кодировки браузера с WIN1251 на KOI8-R, все темы и топики начинают отображаться нормально, а вот форум (движок) - превращается в иероглифы.
Исходя из этого сделал вывод, что БД сохранена в кодировке KOI8-R, а форум установлен в Win-1251.
Отсюда возникает вопрос, каким образом перекодировать базу в Win-1251?
В Дампере прописано forced.
Бэкап делался без forced.
сем откликнувшимся нереальное количество респектов. Надо очень срочно....
Линк на форум:
http://www.telemark.ru/forum/index.php
Прблема заключается в следующем: с помощью Дампера был сделан бэкап базы данных форума (MySQL client version: 3.23.49), после этого было все снесено и залиты новые файлы для установки форума версии 2.0.22. Через phpMyAdmin (2.8.1) все старые таблицы БД были удалены.
Форум установился нормально и полностью фунциклирует.
Пробую восстановить базу данных - все восстанавливается... только появляются иероглифы... т.е. получается, что форум и весь текст самого движка отображается нормально, разделы и топики - "кракозябры". При принудительной смене кодировки браузера с WIN1251 на KOI8-R, все темы и топики начинают отображаться нормально, а вот форум (движок) - превращается в иероглифы.
Исходя из этого сделал вывод, что БД сохранена в кодировке KOI8-R, а форум установлен в Win-1251.
Отсюда возникает вопрос, каким образом перекодировать базу в Win-1251?
В Дампере прописано forced.
Бэкап делался без forced.
сем откликнувшимся нереальное количество респектов. Надо очень срочно....
Линк на форум:
http://www.telemark.ru/forum/index.php
-
- Former team member
- Сообщения: 1139
- Стаж: 19 лет 2 месяца
- Откуда: Ленинград
RE@n!m@TOR
Самым простым способом? Открыть дамп редактором FARа, поставить кодировку ту, в которой дамп читается сейчас (Shift-F8 ), выделить все, Ctrl-X, выставить нужную кодировку, Ctrl-V, F2. Все.
Хотя, если вы FARом не пользуетесь, это может оказаться не самым простым
Самым простым способом? Открыть дамп редактором FARа, поставить кодировку ту, в которой дамп читается сейчас (Shift-F8 ), выделить все, Ctrl-X, выставить нужную кодировку, Ctrl-V, F2. Все.
Хотя, если вы FARом не пользуетесь, это может оказаться не самым простым

И если я неправ, пусть старшие товарищи поправят меня
-
- Former team member
- Сообщения: 4463
- Стаж: 20 лет 5 месяцев
- Поблагодарили: 1 раз
-
- phpBB 1.2.1
- Сообщения: 21
- Стаж: 18 лет 9 месяцев
Все разобрался.
Если кому-то это интересно, описываю процесс и нюанс:
1) в файле lang_main ставим utf-8.
2) сервер mysql должен работать в utf-8, для чего в его настройках (для локального сервера) переписываем на utf-8. Либо, если у хостера стоит другая выдача - то просим его.
3) Пересохраняем языковые файлы в формате utf, в принципе любым редактором. Например тем же Drewmweaver.
Уже на данном этапе все должно показывать нормально. Но, данные в БД будут хранится в вашей старой кодировке. Поэтому переписываем БД (если данные там есть, то их надо перекодировать в UTF)
4) сохраняем дамп БД, исключая содержимое таблиц search_***. Если сервер mysql работает на utf-8, то дамп уже будет в UTF.
5) Меняем в любом редакторе кодировку, например cp1251 на utf8.
6) Возвращаем данные в базу.
Вот вроде так.
Единственно, что нужно учитывать. Для текста в формате UTF надо больше места, поэтому некоторые поля в таблицах надо увеличивать, а также если где-то в шаблонах есть ограничение на ввод символов - тоже.
Еще возможны нюансы с работой скриптов php, например Perl-функции preg_replace.
Если кому-то это интересно, описываю процесс и нюанс:
1) в файле lang_main ставим utf-8.
2) сервер mysql должен работать в utf-8, для чего в его настройках (для локального сервера) переписываем на utf-8. Либо, если у хостера стоит другая выдача - то просим его.
3) Пересохраняем языковые файлы в формате utf, в принципе любым редактором. Например тем же Drewmweaver.
Уже на данном этапе все должно показывать нормально. Но, данные в БД будут хранится в вашей старой кодировке. Поэтому переписываем БД (если данные там есть, то их надо перекодировать в UTF)
4) сохраняем дамп БД, исключая содержимое таблиц search_***. Если сервер mysql работает на utf-8, то дамп уже будет в UTF.
5) Меняем в любом редакторе кодировку, например cp1251 на utf8.
6) Возвращаем данные в базу.
Вот вроде так.
Единственно, что нужно учитывать. Для текста в формате UTF надо больше места, поэтому некоторые поля в таблицах надо увеличивать, а также если где-то в шаблонах есть ограничение на ввод символов - тоже.
Еще возможны нюансы с работой скриптов php, например Perl-функции preg_replace.
-
- phpBB 1.2.1
- Сообщения: 21
- Стаж: 18 лет 9 месяцев
Дополнение. Насчет второго пункта чуть подробнее:
Имеется ввиду, что клиент MySQL должен работать в кодировке UTF-8. Но, поскольку менять хостер этот параметр не может (обычно он общий для все клиентов, если только вы не на выделенном сервере).
Хостинги в России обычно ставят там cp1251, поскольку общая масса сидит на ней, а за бугром чаще всего именно UTF-8.
Значит, в случае, если вы попали на клиента в cp1251, то придется вам дополнительно прописать строку $this->sql_query("SET NAMES 'UTF8'");
каждый раз когда вы подключаетесь к БД. Работает это кажется только начиная с MySQL 4.
В нашем случае это файл db\mysql4.php,
в функции function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
Имеется ввиду, что клиент MySQL должен работать в кодировке UTF-8. Но, поскольку менять хостер этот параметр не может (обычно он общий для все клиентов, если только вы не на выделенном сервере).
Хостинги в России обычно ставят там cp1251, поскольку общая масса сидит на ней, а за бугром чаще всего именно UTF-8.
Значит, в случае, если вы попали на клиента в cp1251, то придется вам дополнительно прописать строку $this->sql_query("SET NAMES 'UTF8'");
каждый раз когда вы подключаетесь к БД. Работает это кажется только начиная с MySQL 4.
В нашем случае это файл db\mysql4.php,
в функции function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
-
- phpBB 1.0.0
- Сообщения: 5
- Стаж: 16 лет
Re:
Доброго времени суток....Batareykin писал(а):и всё таки у меня траблы... Получил доступ прописал forced->cp1251, забекапил, зафигарил на localhost всё пашет. Заливаю на хостинг, там вопросики...
Я не совсем понял где вставить:......mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
Выкладываю для начинающих, для тех, кто имел проблемы со знаками вопроса в скрипте Sypex Dumper Lite 1.0.8
1. оригинал файла mysql4.zip
2. Модифицированный и корректно работающий mysql4_mod.zip
Строка была вставленна тут:
Да.... Это файлы для phpBB 2<.....>
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
{
$this->persistency = $persistency;
$this->user = $sqluser;
$this->password = $sqlpassword;
$this->server = $sqlserver;
$this->dbname = $database;
$this->db_connect_id = ($this->persistency) ? mysql_pconnect($this->server, $this->user, $this->password) : mysql_connect($this->server, $this->user, $this->password);
mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
if( $this->db_connect_id )
{
if( $database != "" )
{
$this->dbname = $database;
$dbselect = mysql_select_db($this->dbname);
if( !$dbselect )
<.....>
У вас нет необходимых прав для просмотра вложений в этом сообщении.