Диагностика и решение проблемы с кодировкой UTF-8 в PHP
При обработке веб-страницы средствами PHP возникает проблема с корректным отображением текста в кодировке UTF-8. Исходный код страницы явно указывает на использование UTF-8 через мета-тег <meta charset="utf-8">, а файл сохраняется в этой кодировке через редактор Sublime Text (опция "Save with encoding > UTF-8").
Проблемное поведение
При выполнении PHP-скрипта наблюдаются следующие симптомы:
- Функция
iconv()выдаёт предупреждение: "Detected an illegal character in input string" - Вывод через
mb_convert_encoding()показывает искажённые символы - Функция
mb_detect_encoding()определяет кодировку как UTF-8 - Прямой вывод переменной
$pageотображает "битые" символы
Структура тестового скрипта
Код размещён в HTML-странице следующей структуры:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body style="margin: 25px;">
<?php /* PHP-код для тестирования */ ?>
</body>
</html>Ключевой вопрос
Несмотря на явные указания использовать UTF-8 как в разметке страницы, так и при сохранении файла, результат остаётся некорректным. Это вызывает закономерный вопрос: что именно происходит не так и как решить эту проблему?