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

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

Сообщение VVVas » 07.09.2007 14:50

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

RE@n!m@TOR

Сообщение RE@n!m@TOR » 24.10.2007 1:27

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

Прблема заключается в следующем: с помощью Дампера был сделан бэкап базы данных форума (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
Зарегистрирован: 21.02.2006 7:53
Откуда: Ленинград

Сообщение /DiOs » 24.10.2007 8:32

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

Хотя, если вы FARом не пользуетесь, это может оказаться не самым простым :)
И если я неправ, пусть старшие товарищи поправят меня

Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Зарегистрирован: 12.11.2004 0:20
Поблагодарили: 13 раз
Контактная информация:

Сообщение VVVas » 24.10.2007 11:01

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

RE@n!m@TOR

Сообщение RE@n!m@TOR » 25.10.2007 0:03

Благодарю за помощь, вопрос решен.

Matt
phpBB 1.2.1
Сообщения: 21
Зарегистрирован: 18.07.2006 11:31
Контактная информация:

Сообщение Matt » 29.10.2007 21:29

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

Matt
phpBB 1.2.1
Сообщения: 21
Зарегистрирован: 18.07.2006 11:31
Контактная информация:

Сообщение Matt » 30.10.2007 17:44

Все разобрался.
Если кому-то это интересно, описываю процесс и нюанс:
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
Зарегистрирован: 18.07.2006 11:31
Контактная информация:

Сообщение Matt » 06.11.2007 18:54

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

Имеется ввиду, что клиент 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
Зарегистрирован: 02.04.2009 23:05
Контактная информация:

Re:

Сообщение mc-sim » 08.04.2009 15:31

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 КБ) 208 скачиваний
mysql4.zip
оригинал файла
(1.55 КБ) 208 скачиваний

Закрыто

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