(PHP 4, PHP 5, PHP 7, PHP 8)
utf8_encode — Convierte una cadena ISO-8859-1 a UTF-8
Esta función ha sido declarada OBSOLETA a partir de PHP 8.2.0. Su uso está totalmente desaconsejado.
Esta función convierte la cadena string
desde
la codificación ISO-8859-1
a UTF-8
.
Nota:
Esta función no intenta adivinar la codificación actual de la cadena de caracteres proporcionada, asume que está codificada en ISO-8859-1 (también conocido como "Latin 1") y la convierte a UTF-8. Dado que cada secuencia de bytes es una cadena de caracteres ISO-8859-1 válida, nunca habrá errores, pero no resultará en una cadena de caracteres útil si se esperaba una codificación diferente.
Muchas páginas web marcadas como que utilizan la codificación de caracteres
ISO-8859-1
utilizan efectivamente una codificación similar aWindows-1252
, y los navegadores web interpretarán las páginas webISO-8859-1
comoWindows-1252
. Las características adicionales deWindows-1252
son caracteres imprimibles, tales como el signo euro (€
) y las comillas curvas (“
”
), en lugar de algunos caracteres de control deISO-8859-1
. Esta función no convertirá estos caracteresWindows-1252
correctamente. Utilice una función diferente si se necesita una conversiónWindows-1252
.
string
Una cadena ISO-8859-1.
Devuelve la versión UTF-8 de string
.
Versión | Descripción |
---|---|
8.2.0 | Esta función ha sido declarada obsoleta. |
7.2.0 | Esta función fue movida al núcleo de PHP, anteriormente, era necesario instalar la extensión XML para utilizarla. |
Ejemplo #1 Ejemplo de uso
<?php
// Convierte la cadena 'Zoë' de ISO 8859-1 a UTF-8
$iso8859_1_string = "\x5A\x6F\xEB";
$utf8_string = utf8_encode($iso8859_1_string);
echo bin2hex($utf8_string), "\n";
?>
El resultado del ejemplo sería:
5a6fc3ab
Nota: Obsolescencia y alternativas
Esta función está obsoleta a partir de PHP 8.2.0 y será eliminada en una versión futura. Los usos existentes deberían ser verificados y reemplazados por alternativas apropiadas.
Una funcionalidad similar puede ser obtenida con mb_convert_encoding(), que soporta ISO-8859-1 y muchos otros juegos de caracteres.
<?php
$iso8859_1_string = "\xEB"; // 'ë' (e con diéresis) en ISO-8859-1
$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
echo bin2hex($utf8_string), "\n";
$iso8859_7_string = "\xEB"; // la misma cadena en ISO-8859-7 representa 'λ' (lambda minúscula griega)
$utf8_string = mb_convert_encoding($iso8859_7_string, 'UTF-8', 'ISO-8859-7');
echo bin2hex($utf8_string), "\n";
$windows_1252_string = "\x80"; // '€' (signo euro) en Windows-1252, pero no en ISO-8859-1
$utf8_string = mb_convert_encoding($windows_1252_string, 'UTF-8', 'Windows-1252');
echo bin2hex($utf8_string), "\n";
?>El resultado del ejemplo sería:
c3ab cebb e282acOtras opciones pueden estar disponibles dependiendo de las extensiones instaladas, tales como UConverter::transcode() y iconv().
Los siguientes ejemplos dan todos el mismo resultado:
<?php
$iso8859_1_string = "\x5A\x6F\xEB"; // 'Zoë' en 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";
?>El resultado del ejemplo sería:
5a6fc3ab 5a6fc3ab 5a6fc3ab 5a6fc3ab