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

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

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

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

Створення баз даних відбувається з кодуванням за замовчуванням 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, і т.д. Якщо замість російських букв ви бачите знаки '?' - Ви потрапили саме в таку ситуацію.
    Більшість питань можна вирішити, скориставшись російськомовними ресурсами з програмування, наприклад, http://www.mysql.ru/ .
    Зазвичай досить слідувати коротким раді ( див. примітка 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