Новини високих технологій
» » PHP iconv: коректна кодування рядків

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

28-06-2018, 15:24
417
Використання 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-коду і бази даних. Проблема буде вирішена.
Характерна риса: кодувань багато, умови для виконання роботи багатогранні, але якщо один раз все перевірити і забезпечити сумісність, то результат буде абсолютно читабельним, а робота веб-ресурсу - бездоганна.
Цікаво по темі
Основні HTML meta-теги: опис
Основні HTML meta-теги: опис
Теги в HTML розташовуються усередині тега і дуже важливі для ранжирування веб-сторінки в пошукових системах.
Перевірка наявності файлу PHP file_exists
Перевірка наявності файлу PHP file_exists
Широке застосування баз даних не позбавило звичайну файлову систему значення. Запис і читання файлів як і раніше займають значиме місце в
PHP sprintf: форматування та обробка рядків
PHP sprintf: форматування та обробка рядків
Функція PHP sprintf дозволяє оформити рядок даних для візуального відображення або подальшої обробки, перетворити число в шістнадцяткову, вісімкову