Как корректно определить кодировку страницы в PHP?
Для корректного определения кодировки страницы в PHP можно воспользоваться следующими способами:
-
Заголовок HTTP:
$charset = $_SERVER['HTTP_ACCEPT_CHARSET']; if (empty($charset)) { $charset = mb_detect_encoding(file_get_contents('php://input'), ['UTF-8', 'windows-1251', 'windows-1252']); }
-
Мета-тег заголовка HTML:
$charset = trim(file_get_contents('php://input'), '<meta charset="'); if (empty($charset)) { $charset = mb_detect_encoding(file_get_contents('php://input'), ['UTF-8', 'windows-1251', 'windows-1252']); }
-
PHP-функция mb_detect_encoding:
$content = file_get_contents('php://input'); $charset = mb_detect_encoding($content, ['UTF-8', 'windows-1251', 'windows-1252']);
-
Анализ заголовка HTTP Content-Type:
$headers = get_headers('http://example.com', 1); $charset = $headers['Content-Type']; $charset = explode('charset=', $charset); $charset = trim($charset[1], ';');
Наиболее надежный способ — комбинировать несколько методов, чтобы повысить точность определения кодировки. Например, сначала проверяем заголовок HTTP, затем мета-тег и, если необходимо, используем mb_detect_encoding
.
Похожие вопросы