Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Перекодировка базы данных

Проблемы с установкой или работой phpBB 2.0.x? Ищите ответы здесь!
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

Shadow
Со старого хостинга дамп получается нормальный? С нормальными русскими буквами? Если да то колебайтесь с новым хостингом, если нет - колебайтесь со старым хостингом, чтобы нормально выгрузило.
я люблю daft punk | новый sugoi.ru
RE@n!m@TOR

Сообщение RE@n!m@TOR »

Приветствую! Извиняюсь, если что-то не так скажу....

Прблема заключается в следующем: с помощью Дампера был сделан бэкап базы данных форума (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
Аватара пользователя
/DiOs
Former team member
Сообщения: 1139
Стаж: 18 лет 1 месяц
Откуда: Ленинград

Сообщение /DiOs »

RE@n!m@TOR
Самым простым способом? Открыть дамп редактором FARа, поставить кодировку ту, в которой дамп читается сейчас (Shift-F8 ), выделить все, Ctrl-X, выставить нужную кодировку, Ctrl-V, F2. Все.

Хотя, если вы FARом не пользуетесь, это может оказаться не самым простым :)
И если я неправ, пусть старшие товарищи поправят меня
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 4 месяца
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas »

RE@n!m@TOR
Любым текстовым редактором который умеет преобразовывать кодировки.
я люблю daft punk | новый sugoi.ru
RE@n!m@TOR

Сообщение RE@n!m@TOR »

Благодарю за помощь, вопрос решен.
Matt
phpBB 1.2.1
Сообщения: 21
Стаж: 17 лет 8 месяцев
Контактная информация:

Сообщение Matt »

В данный момент тоже занимаюсь переключением БД на utf-8, принцип и все такое понятно, но у меня возникла такая странная трабла:
буквы "ш" и "И" показывает вот так - �?
Никак не могу сообразить, что такое. Господа, если кто знает, подскажите!
Matt
phpBB 1.2.1
Сообщения: 21
Стаж: 17 лет 8 месяцев
Контактная информация:

Сообщение Matt »

Все разобрался.
Если кому-то это интересно, описываю процесс и нюанс:
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.
Matt
phpBB 1.2.1
Сообщения: 21
Стаж: 17 лет 8 месяцев
Контактная информация:

Сообщение Matt »

Дополнение. Насчет второго пункта чуть подробнее:

Имеется ввиду, что клиент 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)
mc-sim
phpBB 1.0.0
Сообщения: 5
Стаж: 14 лет 11 месяцев
Контактная информация:

Re:

Сообщение mc-sim »

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
Строка была вставленна тут:
<.....>
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 )
<.....>
Да.... Это файлы для phpBB 2
Вложения
mysql4_mod.zip
модифицированный
(1.62 КБ) 299 скачиваний
mysql4.zip
оригинал файла
(1.55 КБ) 299 скачиваний
Закрыто

Вернуться в «Поддержка phpBB 2.0.x»