Деякі незручності з кодуванням windows-1251 змушують замислитися про те, як перевести кодування проекту на іншу, наприклад, UTF-8. З файлами — все простіше, відкриваємо у редакторі (наприклад, Notepad++) файли скриптів, перетворимо їх кодування UTF-8 без BOM, зберігаємо. Однак якщо ваш сайт використовує для зберігання даних бази (найчастіше MySQL), то вам необхідно конвертувати так само кодування бази даних. Виконання даної задачі передбачає різні способи. Тут ми розглянемо, мабуть, найшвидший і простий спосіб. Робити ми це будемо з допомогою використання SQL-запиту.

Запит для конвертації бази:

ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Даний запит конвертує базу в зазначену кодування, доступну для MySQL. Крім цього буде потрібно конвертувати кодування самих таблиць. Можна виробляти конвертацію таблиць окремо кожну, незручність виникає при великій кількості таблиць. На щастя, мучити себе цим рутинним заняттям не доведеться, оскільки це можна зробити за допомогою одного запиту.

Запит для конвертації таблиць бази даних:

SELECT CONCAT( ‘ALTER TABLE `, t.`TABLE_SCHEMA` , “.`, t.`TABLE_NAME` , ” CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;’ ) AS sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = ‘My_DB_for_convert’
ORDER BY 1
LIMIT 0 , 90

Замість My_DB_for_convert вам необхідно вказати ім’я своєї бази даних. Даний запит буде працювати в MySQL, починаючи з версії 5 і вище. У випадку з використанням утиліти phpMyAdmin все простіше простого, залишається тільки скопіювати даний запит і вставити у форму запиту SQL.
Варто звернути увагу на те, що існують подкодировки UTF-8, популярні з них:

utf8_general_ci і utf8_unicode_ci

Швидкість роботи і порядок сортування в цих споріднених кодувань різна, власне це і відрізняє один від одного. utf8_general_ci – працює трохи швидше, тому перевага віддається саме цьому кодуванні. Різниця зрозуміло мізерна, для того щоб помітити це в дійсності на продуктивності бази, однак такі відомості є.

Додав: htmaker, 08.08.2014 р.
(1 голосів, середній: 5,00 з 5)

Завантаження…

Діліться з друзями:

См. також:


Змінюємо пароль root в MySQL 5.7
Рубрика: Linux, MySQL

Виправлення помилок у базі MySQL
Рубрика: MySQL

Відновлення пароля root в MySQL
Рубрика: MySQL

Утиліта Mytop для MySQL
Рубрика: Linux, MySQL

Кількість запитів до MySQL в режимі реального часу
Рубрика: MySQL

Як дізнатися час виконання MySQL запиту?
Рубрика: MySQL

Оптимізація MySQL (просто про складному)
Рубрика: MySQL

Повнотекстовий індекс: Full text index
Рубрика: MySQL

Вставлення стовпців: ALTER TABLE ADD
Рубрика: MySQL

Коментарі

  • xandros пише:
    13.01.2015 в 10:26

    Саме geneTal_ci швидше канешн ))

    Відповісти

  • htmaker пише:
    13.01.2015 в 11:02

    помилка), виправив)

    Відповісти

  • Міхаель пише:
    27.10.2015 у 16:54

    Автору респект ну просто величезний, пів дня витратив що б зрозуміти чому база utf-8 у запиті ?????????? Виявилося база була в latin-1 🙂 Удачі і всякий благ.

    Відповісти

  • htmaker пише:
    27.10.2015 у 16:57

    дякую!)

    Відповісти

  • ЕГ пише:
    25.04.2016 в 01:10

    Так нічого і не вийшло. 🙁

    Відповісти

  • ЕГ пише:
    25.04.2016 в 01:54

    З першою командою вдалося змінити кодування, але довелося попотіти, вбивати таблиці окремо. Друга команда не спрацювала. 🙂

    Відповісти

  • А пише:
    31.05.2016 в 14:09

    ТРИМАЙТЕСЯ ПОДАЛІ ВІД UTF-8!!! ср1251 відмінний вибір. Працює швидко мало місця займає і швидко сортується. Для 2-мовного коду, один з якого російська інший англійський ідеальний варіант! Краще сконвертируйте навпаки…

    Відповісти

  • Юджин пише:
    25.09.2017 в 15:35

    Шановний ! Тоді переходьте на KOI8-R це ваще вогонь !!!
    Ну а якщо Ви не доросли до UTF-8 тоді не показуйте навколишнім свою глибоку некомпетентність.
    Нас можуть читати діти і вони можуть Вам повірити, а хто потім їх лікувати психіку буде ?
    То-То й воно…

    Відповісти