25-06-2018 20:54

PHP iconv: корректная кодировка строк

Использование PHP дает однозначно работающее решение. Если что-то где-то не отображается, нет синтаксических или семантических ошибок, то проблема будет лежать в используемой кодировке символов. Возможны другие коллизии, но нарушения правил кодирования информации - самые частые.

Общее правило представления информации

Всегда имеет значение кодировка файла, в котором содержится скрипт PHP. Если нет проблем с отображением исходного текста в среде разработки или обычном текстовом редакторе, а в браузере ничего прочитать нельзя - не следует обращаться сразу к функции PHP iconv. Нужно просто поправить строчки:

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

Как установить Microsoft Office: советы, подсказки, рекомендацииВам будет интересно:Как установить Microsoft Office: советы, подсказки, рекомендации

Это простое правило, обычно в этом контексте проблем нет: если в среде разработки код PHP отображается корректно (кириллица), то в браузере он будет читабелен. Даже малоквалифицированный программист сможет все подстроить так, как надо.

Код PHP - это обработка текстовой информации. Часто программист забывает, что один символ - это далеко не всегда один байт. Если сайт посвящен математическим расчетам, а кириллица применяется при выводе результатов, возможны коллизии. Это решается применением функции iconv() в PHP-коде страницы.

Если в процессе обработки информации используется база данных, то информация может просто «пропасть». В реальность все есть и все работает, просто нужно произвести надлежащие преобразования.

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

Прежде чем производить преобразование, нужно знать:

  • из какой кодировки;
  • в какую кодировку.

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

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

Работа с базой данных

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

Проблема решается просто. Если запрос исполняется без ошибок, значит, виновато несоответствие кодировки базы данных и кода страницы. Обычно этого достаточно, если нет, нужно проверить кодировку HTML-страницы, PHP-кода и базы данных. Проблема будет решена.

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



Источник