utf8_encode

(PHP 4, PHP 5, PHP 7, PHP 8)

utf8_encodeПреобразовывает строку из ISO-8859-1 в UTF-8

Внимание

Функция объявлена УСТАРЕВШЕЙ начиная с PHP 8.2.0. Использовать эту функцию крайне не рекомендуется.

Описание

utf8_encode(string$string): string

Функция преобразовывает строку string из кодировки ISO-8859-1 в кодировку UTF-8.

Замечание:

Функция не пытается угадать текущую кодировку предоставленной строки, а предполагает, что она закодирована в ISO-8859-1 (также известная как "Latin 1") и преобразует её в UTF-8. Поскольку каждая последовательность байтов является корректной строкой ISO-8859-1, это никогда не приводит к ошибке, но не приведёт к получению полезной строки, если предполагалась другая кодировка.

Многие веб-страницы, отмеченные как использующие кодировку ISO-8859-1, на самом деле используют схожую кодировку Windows-1252, и веб-браузеры интерпретируют страницы ISO-8859-1 как Windows-1252. Однако Windows-1252 содержит дополнительные печатные символы, такие как знак Евро () и фигурные кавычки () вместо управляющих кодов ISO-8859-1. Эта функция не конвертирует такие символы Windows-1252 корректно. Используйте другую функцию, если нужна конвертация из Windows-1252.

Список параметров

string

Строка ISO-8859-1.

Возвращаемые значения

Возвращает строку string, преобразованную в кодировку в UTF-8.

Список изменений

ВерсияОписание
8.2.0 This function has been deprecated.
7.2.0 Функция была перенесена из модуля XML в ядро PHP. В предыдущих версиях она была доступна только при установленном модуле XML.

Примеры

Пример #1 Простой пример

<?php
// Преобразование строки 'Zoë' из ISO 8859-1 в UTF-8
$iso8859_1_string = "\x5A\x6F\xEB";
$utf8_string = utf8_encode($iso8859_1_string);
echo
bin2hex($utf8_string), "\n";
?>

Результат выполнения приведённого примера:

5a6fc3ab

Примечания

Замечание: Устаревание и альтернативы

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

Аналогичной функциональности можно достичь с помощью функции mb_convert_encoding(), которая поддерживает ISO-8859-1 и многие другие кодировки символов.

<?php
$iso8859_1_string
= "\xEB"; // 'ë' (e с диерезисом) в UTF-8
$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
echo
bin2hex($utf8_string), "\n";

$iso8859_7_string = "\xEB"; // та же строка в ISO-8859-7 представляет собой 'λ' (греческая строчная лямбда)
$utf8_string = mb_convert_encoding($iso8859_7_string, 'UTF-8', 'ISO-8859-7');
echo
bin2hex($utf8_string), "\n";

$windows_1252_string = "\x80"; // '€' (Знак евро) в Windows-1252, но не в ISO-8859-1
$utf8_string = mb_convert_encoding($windows_1252_string, 'UTF-8', 'Windows-1252');
echo
bin2hex($utf8_string), "\n";
?>

Результат выполнения приведённого примера:

c3ab cebb e282ac

Другие опции, которые могут быть доступны в зависимости от установленных модулей: UConverter::transcode() и iconv().

Все следующие варианты дают один и тот же результат:

<?php
$iso8859_1_string
= "\x5A\x6F\xEB"; // 'Zoë' в ISO-8859-1

$utf8_string = utf8_encode($iso8859_1_string);
echo
bin2hex($utf8_string), "\n";

$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
echo
bin2hex($utf8_string), "\n";

$utf8_string = UConverter::transcode($iso8859_1_string, 'UTF8', 'ISO-8859-1');
echo
bin2hex($utf8_string), "\n";

$utf8_string = iconv('ISO-8859-1', 'UTF-8', $iso8859_1_string);
echo
bin2hex($utf8_string), "\n";
?>

Результат выполнения приведённого примера:

5a6fc3ab 5a6fc3ab 5a6fc3ab 5a6fc3ab

Смотрите также

  • utf8_decode() - Преобразовывает строку из кодировки UTF-8 в кодировку ISO-8859-1, заменяя недопустимые или непредставимые символы
  • mb_convert_encoding() - Преобразовывает строку из одной кодировки символов в другую
  • UConverter::transcode() - Преобразовывает строку из одной кодировки символов в другую
  • iconv() - Преобразовывает строку из одной кодировки символов в другую
To Top