PHP iconv: коректне кодування рядків

PHP iconv: коректне кодування рядків

Використання PHP дає однозначно працююче рішення. Якщо щось десь не відображається, немає синтаксичних або семантичних помилок, проблема буде лежати у використовуваному кодуванні символів. Можливі інші колізії, але порушення правил кодування інформації - найчастіші.

Загальне правило представлення інформації

Завжди має значення кодування файлу, в якому міститься скрипт PHP. Якщо немає проблем з відображенням вихідного тексту в середовищі розробки або звичайному текстовому редакторі, а в браузері нічого прочитати не можна - не слід звертатися відразу до функції PHP iconv. Потрібно просто поправити рядки:


  • «META charset=""UTF-8""» или charset=""windows-1251"";
  • «META HTTP-EQUIV=""Content-Language"" CONTENT=""en,ru""».

Це просте правило, зазвичай у цьому контексті проблем немає: якщо в середовищі розробки код PHP відображається коректно (кирилиця), то в браузері він буде читабельним. Навіть малокваліфікований програміст зможе все підлаштувати так, як треба.

Код PHP - це обробка текстової інформації. Часто програміст забуває, що один символ - це далеко не завжди один байт. Якщо сайт присвячений математичним розрахункам, а кирилиця застосовується при виведенні результатів, можливі колізії. Це вирішується застосуванням функції iconv () у PHP-коді сторінки.

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

Наведені приклади показують, як просто перетворити рядки з одного кодування на інше за допомогою функції PHP iconv (). Не суть важливо, в якому регістрі записувати стандартні позначення кодувань, але сенс використання функції повинен бути коректний.

Перш ніж перетворювати, потрібно знати:

  • з якого кодування;
  • в яке кодування.

Останній приклад показує, як iconv використовується для візуалізації виконання зовнішньої команди dir, виконаної у Windows 10. Результати роботи команди повернуті назад в місце виклику, де PHP iconv () трансформувала їх з CP866 в UTF-8, і вони коректно відобразилися в браузері.


У всіх цих випадках функція надала можливість отримати інформацію в читабельному вигляді.

Робота з базою даних

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

Проблема вирішується просто. Якщо запит виконується без помилок, значить, винна невідповідність кодування бази даних і коду сторінки. Зазвичай цього достатньо, якщо ні, потрібно перевірити кодування HTML-сторінки, PHP-коду та бази даних. Проблема буде вирішена.

Характерна риса: кодувань багато, умови для виконання роботи багатогранні, але якщо один раз все перевірити і забезпечити сумісність, то результат буде абсолютно читабельним, а робота веб-ресурсу - бездоганна.