1gb - .net, ASP, Windows, Apache, PHP хостинг
База документов / Базы данных / MySQL 5 / MySQL Работа с кодировками

MySQL Работа с кодировками

смотреть документ на языке:    на украинском украинский   на русском русский

Важливо: для нових баз даних

Створення баз даних відбувається з кодуванням за замовчуванням CP1251 / CP1251_general_ci . Сайти на PHP 5, створені після 1 грудня 2007 року, працюють з цим кодуванням без додаткового налаштування.

Подальша інформація в статті має відношення до старих сайтів нашого хостингу, а також до інших mySQL клієнтів, які ви можете зустріти на нашому хостингу або у власних додатках.

Для баз існуючих клієнтів (до грудня 2007 року) або сайтів на PHP 4

Кодування бази даних (charset, collation) встановлює режим роботи з текстовою інформацією в базі. Кодування задається двома параметрами: charset - набір кодів символів, що розглядаються як текст і collation - правила роботи з цими символами (правила сортування, порівняння, переведення регістрів).

У mySQL 4 з'явилася можливість самостійно задавати кодування для таблиць і навіть для окремих полів таблиць.

На жаль, робота з різними кодуваннями в mySQL 4, 5 зроблена не цілком вдало. Ми можемо запропонувати два способи роботи.

Робота з кодуванням за замовчуванням

Типово на нашому хостингу встановлений charset - latin1, collation - latin1_binary. Порівняння кириличних літер проводиться за їх кодом по номеру. Це дозволяє робити наступне:

  • Головне: Цей режим сумісний з усім ПЗ - старими і новими клієнтами, mySQL Front, PHP клієнтами, ODBC, і т.д., тобто досягається максимальна сумісність з усім тим, що працювало з mySQL 3х версій.
  • Зберігання кириличних символів у всіх режимах здійснюється правильно.
  • Сортування кириличних символів здійснюється правильно, окрім літер Ё, Ї і подібних (на жаль).
  • На жаль, регістро-незалежне порівняння та перетворення регістрів для кириличного алфавіту в цьому режимі не працює. Пам'ятайте, це може призвести до непрацездатності програм, які розраховані на це!

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

Цей спосіб цілком підійде людям, яким досить описаної функціональності, або в тому випадку, якщо вирішити проблеми, викликані "коректною" роботою з кодуванням, не вдається.

Робота з правильним кодуванням (CP-1251)

Для роботи з правильним кодуванням вам потрібно за допомогою засобу управління базою, сумісного з mySQL 4/5, змінити кодування таблиць. Зручніше це робити відразу після створення таблиці, щоб поля наслідували це кодування автоматом.
Увага: не забувайте, що поміняти кодування таблиці після створення там полів недостатньо, переконайтеся, що поля теж мають правильне кодування!

Засоби управління можна скачати з сайту www.mysql.com , наприклад, mySQL Administrator .

  • Головне: Цей режим не до кінця сумісний з ПЗ, розрахованим на роботу з mySQL 3, таким, як mySQL Front і т.п., також не завжди виходить нормально працювати з клієнтами - PHP, ODBC, і т.д. Якщо замість кириличних літер ви бачите знаки '?' - Ви потрапили саме в таку ситуацію.
    Більшість питань можна вирішити, скориставшись ресурсами з програмування. Зазвичай достатньо дотримуватися короткої поради (див. примітку 1).
  • Зберігання та обробка кириличних символів у всіх режимах здійснюється правильно.

Увага: практика показує, що змінювати charset і collation на таблиці, яка вже має дані, марно - ви отримаєте '?' замість кириличних символів.

Примітка 1: Зазвичай для правильної роботи з кодуванням CP1251 досить дати наступні команди після з'єднання з базою (приклад для PHP):

Mysql_query ("set character_set_client ='cp1251'");
mysql_query ("set character_set_results ='cp1251'");
mysql_query ( set collation_connection ='cp1251_general_ci'");

Примітка 2: Для ODBC драйвера для mySQL до рядка підключення необхідно дописати наступний параметр:

Stmt = SET NAMES ' cp1251 '

Додаткова інформація

На жаль, служба підтримки не може надавати допомогу щодо вирішення проблем кодувань mySQL 4. Кількість засобів програмування і способів використання бази дуже велике, щоб описати кожен випадок.

Практика показує, що використання умовно - правильного сумісного режиму ( latin1/latin1_binary ), яке відбувається за замовчуванням, вирішує основну проблему роботи з кодуванням (сортування), і надає гарний рівень зворотної сумісності.

У разі проблем, ми можемо також рекомендувати вам користуватися базою mySQL 3.*, Для якої на нашому хостингу встановлено ​​традиційно кодування cp1251 (Windows). Однак пам'ятайте, що в цьому випадку вам доведеться працювати з текстами в кодуванні cp1251 .

 

отправить комментарий, замечание, поправку
 


 

Ми завжди готові відповісти на ваші запитання
 
  • Будь-які запитання та підтримка - support@1gb.ua
  •  

     
       
     
    Наверх     
    Поддержка: support@1gb.ua