UConverter::transcode

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

UConverter::transcodeConvertit une chaîne d'un jeu de caractères à un autre

Description

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

Convertit str de fromEncoding à toEncoding.

Liste de paramètres

str

La chaîne de caractères à convertir.

toEncoding

Le jeu de caractères souhaité pour le résultat.

fromEncoding

Le jeu de caractères actuel utilisé pour interpréter str.

options

Un tableau optionnel, qui peut contenir les clés suivantes :

  • 'to_subst' - le caractère de substitution à utiliser à la place de tout caractère de str qui ne peut pas être encodé en toEncoding. S'il est spécifié, il doit représenter un seul caractère dans l'encodage cible.

Valeurs de retour

Retourne la chaîne convertie, ou false si une erreur survient.

Exemples

Exemple #1 Conversion de UTF-8 à UTF-16 et inversement

<?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";
?>

L'exemple ci-dessus va afficher :

005a006f00eb
5a6fc3ab

Exemple #2 Caractères non valides en entrée

Si la chaîne d'entrée contient une séquence d'octets qui n'est pas valide dans l'encodage spécifié par fromEncoding, ils sont remplacés par le point de code Unicode U+FFFD (Caractère de remplacement) avant d'être convertis en toEncoding.

<?php
$invalid_utf8_string
= "\xC3"; // séquence multi-octets UTF-8 incomplète
$utf16_string = UConverter::transcode($invalid_utf8_string, 'UTF-16BE', 'UTF-8');
echo
bin2hex($utf16_string), "\n";
?>

L'exemple ci-dessus va afficher :

fffd

Exemple #3 Caractères ne pouvant être encodés

Si la chaîne d'entrée contient des caractères qui ne peuvent pas être représentés en toEncoding, ils sont remplacés par un seul caractère. Le caractère par défaut à utiliser dépend de l'encodage et peut être contrôlé à l'aide de l'option 'to_subst'.

<?php
$utf8_string
= "\xE2\x82\xAC"; // € (signe euro) n'existe pas dans l'ISO 8859-1

// Le remplacement par défaut dans ISO 8859-1 est "\x1A" (Substitut)
$iso8859_1_string = UConverter::transcode($utf8_string, 'ISO-8859-1', 'UTF-8');
echo
bin2hex($iso8859_1_string), "\n";

// Spécifie un remplacement de '?' ("\x3F") à la place
$iso8859_1_string = UConverter::transcode(
$utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo
bin2hex($iso8859_1_string), "\n";

// Puisque l'ISO 8859-1 ne peut pas mapper U+FFFD, l'entrée invalide est également remplacée par to_subst.
$invalid_utf8_string = "\xC3"; // séquence multi-octets UTF-8 incomplète
$iso8859_1_string = UConverter::transcode(
$invalid_utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
);
echo
bin2hex($iso8859_1_string), "\n";
?>

L'exemple ci-dessus va afficher :

1a
3f
3f

Voir aussi

  • mb_convert_encoding() - Convertir une chaîne d'un codage de caractères à un autre
  • iconv() - Convertit une chaîne de caractères à partir d'un encodage vers un autre

add a note

User Contributed Notes

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