Як змінити кодування бази
Прочитавши: 3504
Система управління базами даних Mysql, починаючи з версії 4.1, підтримує роботу з кодуваннями. Основні проблеми з ними виникають при з'єднанні бази даних з Php. У цьому випадку кодування вмісту бази і з'єднання повинна збігатися.
Інструкція
Зверніть увагу, що зазвичай причиною виникнення проблем з Mysql є те, що за замовчуванням кодування для баз даних призначається latin1. Більшість підключених клієнтів також налаштовані на неї, ви вносите дані і переглядаєте результати теж з її використанням. Хоч дана кодування і коректно відображає кирилицю, але коди таблиці символів в ній не відповідають реальним символам кирилиці. Тому пошук і сортування даних можуть видавати абсолютно непередбачувані результати.
Виконайте зміна кодування бази даних на ту, яка коректно відображає кириличні символи, наприклад, utf-8 або cp1251. Для цього конвертуйте дані з кодування Latin1 в cp1251. Не використовуйте при цьому просте конвертування даних, так як коди символів некоректні. Тому необхідно позбутися їх прив'язки до кодуванні. Для цього перетворіть дані і символьний тип в двійкові дані. Скористайтеся запитом Alter table «Введіть ім'я таблиці» t1 change c1 c1 blob.
Виконайте запит для зміни кодування бази даних Mysql, для цього скористайтеся наступним прикладом: Alter table «Введіть ім'я таблиці» t1 change c1 c1 text chatacter set «Введіть назву потрібної кодування, наприклад, cp1251». Фізично не змінюється ні один байт даних, а змінюється правило формування символів. У подальшому для зміни кодування БД ви можете користуватися простим запитом конвертації даних.
Зверніть увагу, при зміні кодувань таблиці в поле, яке містить індекси, необхідно видалити їх і створити заново, тобто перебудувати у всіх таблицях бази даних. При переході на кодування переконайтеся, що візуальні клієнти підтримують unicode. Наприклад, клієнт SQLyog некоректно відображає вміст таблиць, які зберігають дані в кодуванні utf-8.