Конвертація бази даних DLE з utf-8, windows-1251

Про те, як перевести сайт та базу даних, кодування windows-1251 в кодування utf-8, вже розповідалося неодноразово. Це можна зробити засобами самої DLE. Дана стаття призначена для тих, хто хоче перевести сайт з кодування utf-8 кодування windows-1251. Зробити це порівняно легко в “домашніх” умовах без звернень до техпідтримці хостингу або без самостійних додаткових маніпуляцій на своєму сервері. Сподіваюся, вона допоможе тим, хто з якихось причин розчарувався в кодуванні utf-8 і вирішив повернутися до windows-1251.

Для початку вам потрібно зробити дамп бази даних вашого сайту можна, і навіть краще, засобами самого движка через адмінпанель сайту), які працюють в кодуванні utf-8, і завантажити цей дамп собі на локальний комп’ютер.

Перед тим як почати займатися базою даних, вам потрібно буде видалити файли дистрибутива старого сайту в кодуванні utf-8 і проінсталювати за новою дистрибутив DLE в кодуванні windows-1251. Від старого дистрибутива вам потрібно залишити на хостингу (НЕ ВИДАЛЯТИ!!!) папку uploads і всі файли в ній. Також, скачайте собі на комп’ютер папку з вашим робочим шаблоном і папку engine/data з усіма файлами конфігурації сайту – вони вам знадобляться, щоб не вводити всі налаштування заново після установки DLE в кодуванні windows-1251.

Базу даних на хостингу можна залишити колишнє, але з неї потрібно видалити всі таблиці, залишивши її повністю порожній. Потім через phpmyadmin вам буде потрібно на вкладці “Операції” виставити “Порівняння” cp1251_general_ci для цієї бази даних.


Для самого сайту, щоб не було проблем з відображенням кодування в браузерах, в вашій панелі керування на хостингу потрібно буде виставити для вашого домену кодування windows-1251 перед початком робіт. Тепер можна проінсталювати DLE в кодуванні windows-1251 в вашу порожню базу даних. При установці вкажіть префікс таблиць, всі логіни і паролі до адмінці сайту та бази даних точно такими ж, які вони у вас були до цього в колишній базі даних сайті на utf-8. Це допоможе вам уникнути проблем і незрозумілих вам ситуацій в подальшому.

Тепер займемося самою базою даних…
Распакуем архів з базою даних архіватором, наприклад WinRAR. У вас вийде файл з розширенням .sql. Відкриємо його за допомогою безкоштовного текстового редактору Notepad++ (він підтримує досить великі файли, якщо хтось турбується із-за розміру свого дампу бази даних). У правому нижньому куті вікна Notepad++ буде видно кодування “UNIX ANSI as UTF-8”.


Конвертувати бази даних будемо в два етапи.
– Перший етап
Для початку нам потрібно змінити назву кодування з utf-8, windows-1251 по всій базі даних для всіх таблиць. Для цього викликаємо діалог пошуку і заміни в Notepad++ і будемо змінювати текст в базі даних з utf8 на cp1251, як на скріншоті.


Натискаємо “Замінити все” і після натискаємо “Зберегти зміни” (іконка дискети). Для DLE 9.5 на даний момент таблиць має бути 35 і стільки ж повинно бути вироблено замін (див. скріншот).


– Другий етап
Тепер нам потрібно конвертувати саму базу даних у windows-1251. Щоб зберегти кирилицю кирилицею, без всяких крякозяблов, робимо наступне…
Натискаємо кнопку “Кодування” в меню Notepad++ і потім у випадаючому меню вибираємо “Перетворити в ANSI”.


Чекаємо поки Notepad++ закінчить цю операцію (на великих базах це може зайняти час) і після цього знову натискаємо “Зберегти зміни” (іконка дискети).
Якщо ви зробили все саме так, то кирилиця у вашій базі даних збереглася без змін, а у правому нижньому кутку вікна Notepad++ буде видно кодування “UNIX ANSI”.


Ваша нова база даних в кодуванні windows-1251 готова. Тепер ви можете упакувати її в zip архів, щоб уберегти від можливих пошкоджень при завантаженні на хостинг, і завантажити в папку backup вашого свежеустановленного сайту, де вже распакуете цей архів через панель керування хостингом (ISPManager або аналогічні). Після цього ви зможете відновити базу даних стандартними засобами движка через адмінпанель сайту в розділі “Управління базою даних”. Після відновлення бази даних не забудьте в розділі “Категорії” натиснути кнопку “Відсортувати категорії”. Ось, власне, і всі премудрості, тепер у вас сайт, і база даних в кодуванні windows-1251.
Якщо ви прислухалися до моєї поради при новій установці DLE в кодуванні windows-1251 зберегти префікси таблиць, а також логіни та паролі до бази даних і адмінці сайту колишніми, то ви без проблем ввійдете на сайт після відновлення нашої зміненої бази даних.

Для того, щоб вам повернути всі установки (не дарма я говорив про необхідність зберегти всі файли з папки engine/data), відкрийте збережений файл config.php знайдіть рядок
‘charset’ => “utf-8”,
і замініть її на
‘charset’ => “windows-1251”,
і потім натискаємо “Зберегти зміни” (іконка дискети). Щоб перевести цей файл з налаштуваннями з кодування utf-8, windows-1251 робимо все те ж саме, як і з базою даних, і після знову натискаємо “Зберегти зміни” (іконка дискети). У правому нижньому куті вікна Notepad++ буде видно кодування “UNIX ANSI”. Можете завантажити тепер цей файл config.php до себе на сайт в папку data – всі налаштування і кодування будуть збережені. Якщо інші файли зі старої папки data у вас теж змінювалися на хостингу, то проробляєте з кожним потрібне вам з них усі ті ж дії, а після завантажуєте до себе на сайті в папці data.

З шаблоном потрібно зробити те ж саме – всі файли стилів .css і шаблонів .tpl потрібно перевести в кодування windows-1251 за допомогою Notepad++ по тому ж принципу, а після завантажити до себе на сайт в папку з шаблонами. Не забудьте виставити права на файли, згідно з документацією, до DLE.

Ну ось і все. Сподіваюся, що ця інформація буде для когось корисним. Пам’ятайте, що щоб уникнути помилок з конвертацією файлів і бази даних, всі операції потрібно робити з точністю та в два етапи, як описано вище.
75