Проблеми українським кодуванням

Автор: mahoune Прислав:

Проблеми з українською мовою та як їх вирішувати

Проблем буває кілька:Найнешкідливіша і мабуть з чого треба починати - правильно виставити кодування. Для цього достатньо належним чином налаштувати MySQL через файл налаштувань my.cnf Ось приклад цього файлу, в ньому залишилися рядки, що стосуються лише налаштування мови:

Бувають випадки коли, навіть після цих змін, у Web-інтерфейсі, наприклад у CMS, замість українських букв відображаються знаки "?" чи інші символи. У цьому випадку необхідно додати файл my.cnf наступний рядок:

або виконувати запит SET NAMES CP1251 на початку встановленого з'єднання до бази даних.

Не працює сортування та інші функції:(UCASE(), LCASE(), LIKE та інші). У цій ситуації найкраще рішення це перекомпилювати MySQL з вихідних текстів з використанням ключа --with -charset = CP1251.

Другий варіант використовувати BINARY, але тут не все працюватиме. Не буде працювати UCASE() та низка інших. Не буде працювати LIKE без урахування регістру.

Невірно повертаються українські символи з бази данихУ цьому питанні треба зрозуміти головне, MySQL ніколи не перекодуватиме ваші дані перед збереженням, за винятком випадків використання CHARACTER SET cp1251_koi8 відповідно для перекодування cp1251 з/в KOI8. Всі інші варіанти, як правило, пов'язані з невідповідністю налаштувань мови веб-сервера та бази даних.

P.S.Особливо хочеться попередити, намагайтеся не підключатися до бази даних користувачемrootбез потреби. Крім проблем пов'язаних з безпекою, ви можете отримати проблеми з відображенням українських символів, зокрема, при підключенні під користувачемrootбуде проігнорована наступнаналаштування з файлу my.cnf :

Замовити розкрутку сайту оптимізація сайтів послуги seo просування сайту З усіх питань Ви можете звернутися в скайп логін pokras7777 ми із задоволенням відповімо на всі питання, що вас цікавлять. Аналіз вашого інтернет-проекту безкоштовно

variable = innodb_lock_wait_timeout=50 - як ставиться до проблем кодування? Ніяк. Потрібно викинути.

character-sets-dir = d:/usr/local/mysql/share/charsets - не обов'язково, на скільки я розумію. Якщо --basedir вказано правильно, і там все правильно лежить, MySQL повинен знайти каталог з charsets.

Ачип'ятку полагодив, дякую за увагу!

Чому б просто не використовувати юнікод і юнікодну локаль?