(044) 538-1588
UA| RU
 
  1gb - .net, ASP, Windows, Apache, PHP хостинг

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 .



Бажаєте стати клієнтом нашого хостингу? Спробуйте наші послуги та сервіс.
Тестовий період до 10 днів, OK реєстрація займає всього одну хвилину.
Будемо раді бачити вас нашим клієнтом!




 

Усі розділи та статті

 
Зверніться за допомогою
та підтримкою
до 1GbWiki

 

   
 
Вгору     
Підтримка: support@1gb.ua
інші способи зв'язку
© 2005-2024 1GB Хостинг