PHP 8.5.0 Alpha 2 available for testing

UConverter::transcode

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

UConverter::transcodeConvierte una cadena de un juego de caracteres a otro

Descripción

public static UConverter::transcode(
    string $str,
    string $toEncoding,
    string $fromEncoding,
    ?array $options = null
): string|false

Convierte str de fromEncoding a toEncoding.

Parámetros

str

El string a convertir.

toEncoding

El juego de caracteres deseado para el resultado.

fromEncoding

El juego de caracteres actual utilizado para interpretar str.

options

Un array opcional, que puede contener las siguientes claves:

  • 'to_subst' - el carácter de sustitución a utilizar en lugar de cualquier carácter de str que no pueda ser codificado en toEncoding. Si se especifica, debe representar un solo carácter en el codificación objetivo.

Valores devueltos

Devuelve la cadena convertida, o false si ocurre un error.

Ejemplos

Ejemplo #1 Conversión de UTF-8 a UTF-16 y viceversa

<?php
$utf8_string
= "\x5A\x6F\xC3\xAB"; // 'Zoë' en UTF-8
$utf16_string = UConverter::transcode($utf8_string, 'UTF-16BE', 'UTF-8');
echo
bin2hex($utf16_string), "\n";

$new_utf8_string = UConverter::transcode($utf16_string, 'UTF-8', 'UTF-16BE');
echo
bin2hex($new_utf8_string), "\n";
?>

El ejemplo anterior mostrará :

005a006f00eb
5a6fc3ab

Ejemplo #2 Caracteres no válidos en la entrada

Si la cadena de entrada contiene una secuencia de octetos que no es válida en el codificación especificado por fromEncoding, son reemplazados por el punto de código Unicode U+FFFD (Carácter de reemplazo) antes de ser convertidos a toEncoding.

<?php
$invalid_utf8_string
= "\xC3"; // secuencia multi-octetos UTF-8 incompleta
$utf16_string = UConverter::transcode($invalid_utf8_string, 'UTF-16BE', 'UTF-8');
echo
bin2hex($utf16_string), "\n";
?>

El ejemplo anterior mostrará :

fffd

Ejemplo #3 Caracteres que no pueden ser codificados

Si la cadena de entrada contiene caracteres que no pueden ser representados en toEncoding, son reemplazados por un solo carácter. El carácter por defecto a utilizar depende del codificación y puede ser controlado mediante la opción 'to_subst'.

<?php
$utf8_string
= "\xE2\x82\xAC"; // € (símbolo euro) no existe en el ISO 8859-1

// El reemplazo por defecto en ISO 8859-1 es "\x1A" (Sustituto)
$iso8859_1_string = UConverter::transcode($utf8_string, 'ISO-8859-1', 'UTF-8');
echo
bin2hex($iso8859_1_string), "\n";

// Especifica un reemplazo de '?' ("\x3F") en su lugar
$iso8859_1_string = UConverter::transcode(
$utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo
bin2hex($iso8859_1_string), "\n";

// Dado que el ISO 8859-1 no puede mapear U+FFFD, la entrada inválida también es reemplazada por to_subst.
$invalid_utf8_string = "\xC3"; // secuencia multi-octetos UTF-8 incompleta
$iso8859_1_string = UConverter::transcode(
$invalid_utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo
bin2hex($iso8859_1_string), "\n";
?>

El ejemplo anterior mostrará :

1a
3f
3f

Ver también

  • mb_convert_encoding() - Convertir una cadena de un codificación de caracteres a otra
  • iconv() - Convierte una cadena de caracteres de un encodaje a otro

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top