utf8_encode
(PHP 4, PHP 5, PHP 7, PHP 8)
utf8_encode — Converte uma string ISO-8859-1 em UTF-8
Esta função tornou-se DEFASADA a partir do PHP 8.2.0. O uso desta função é fortemente desencorajado.
Descrição
Esta função converte a string string
da codificação
ISO-8859-1
para a UTF-8
.
Note:
Esta função não tenta descobrir a codificação da string fornecida, ela assume que esteja codificada como ISO-8859-1 (também conhecida como "Latin 1") e converte-a para UTF-8. Como toda sequência de bytes é uma string ISO-8859-1 válida, isto nunca irá resultar em erro, mas não irá resultar em uma string útil se uma codificação diferente era a intenção.
Muitas páginas da web que dizem usar a codificação
ISO-8859-1
na verdade usam a codificação similarWindows-1252
, e os navegadores irão interpretar as páginasISO-8859-1
comoWindows-1252
.Windows-1252
apresenta caracteres imprimíveis adicionais, como o símbolo do Euro (€
) e aspas inglesas (“
”
), ao invés de certos caracteres de controleISO-8859-1
. Esta função não converterá esses caracteresWindows-1252
corretamente. Use uma função diferente se a conversão deWindows-1252
for requerida.
Parâmetros
string
-
Uma string em ISO-8859-1.
Valor Retornado
Retorna a conversão em UTF-8 da string
.
Registro de Alterações
Versão | Descrição |
---|---|
8.2.0 | Esta função tornou-se defasada. |
7.2.0 | Esta função foi movida de extensão XML para o núcleo do PHP. Em versões anteriores, estava disponível somente se a extensão XML estivesse instalada. |
Exemplos
Example #1 Exemplo básico
<?php
// Converte a string 'Zoë' de ISO 8859-1 para UTF-8
$iso8859_1_string = "\x5A\x6F\xEB";
$utf8_string = utf8_encode($iso8859_1_string);
echo bin2hex($utf8_string), "\n";
?>
O exemplo acima produzirá:
5a6fc3ab
Notas
Note: Defasagem e alternativas
Esta função tornou-se defasada a partir do PHP 8.2.0, e será removida em uma versão futura. Usos existentes devem ser verificados e substituídos com alternativas apropriadas.
Funcionalidade similar pode ser obtida com mb_convert_encoding(), que suporta ISO-8859-1 e muitas outras codificações de caracteres.
<?php $iso8859_1_string = "\xEB"; // 'ë' (e com trema) em 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"; // a mesma string em ISO-8859-7 representa 'λ' (letra grega lambda minúscula) $utf8_string = mb_convert_encoding($iso8859_7_string, 'UTF-8', 'ISO-8859-7'); echo bin2hex($utf8_string), "\n"; $windows_1252_string = "\x80"; // '€' (símbolo do Euro) em Windows-1252, mas não em ISO-8859-1 $utf8_string = mb_convert_encoding($windows_1252_string, 'UTF-8', 'Windows-1252'); echo bin2hex($utf8_string), "\n"; ?>
O exemplo acima produzirá:
c3ab cebb e282acOutros exemplos que podem estar disponíveis dependendo das extensões instaladas são UConverter::transcode() e iconv().
Todos os exemplos a seguir dão o mesmo resultado:
<?php $iso8859_1_string = "\x5A\x6F\xEB"; // 'Zoë' em 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"; ?>
O exemplo acima produzirá:
5a6fc3ab 5a6fc3ab 5a6fc3ab 5a6fc3ab
Veja Também
- utf8_decode() - Converte uma string de UTF-8 para ISO-8859-1, substituindo caracteres inválidos ou não representáveis
- mb_convert_encoding() - Converte uma string de uma codificação de caracteres para outra
- UConverter::transcode() - Converte uma string de uma codificação de caracteres para outra
- iconv() - Converte uma string de uma codificação de caracteres para outra