J'ai certains caractères codés UTF-16 dans leur forme de paire de substitution. Je veux sortir ces paires de substitution en tant que caractères sur l'écran.Sortie UTF-16? Un peu coincé
Est-ce que quelqu'un sait comment cela est possible?
J'ai certains caractères codés UTF-16 dans leur forme de paire de substitution. Je veux sortir ces paires de substitution en tant que caractères sur l'écran.Sortie UTF-16? Un peu coincé
Est-ce que quelqu'un sait comment cela est possible?
iconv('UTF-16', 'UTF-8', yourString)
Votre question est un peu claire.
Si vous avez un texte ASCII avec des séquences d'échappement UTF-16 intégré, vous pouvez convertir tout en UTF-8 de cette façon:
function unescape_utf16($string) {
/* go for possible surrogate pairs first */
$string = preg_replace_callback(
'/\\\\u(D[89ab][0-9a-f]{2})\\\\u(D[c-f][0-9a-f]{2})/i',
function ($matches) {
$d = pack("H*", $matches[1].$matches[2]);
return mb_convert_encoding($d, "UTF-8", "UTF-16BE");
}, $string);
/* now the rest */
$string = preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
function ($matches) {
$d = pack("H*", $matches[1]);
return mb_convert_encoding($d, "UTF-8", "UTF-16BE");
}, $string);
return $string;
}
$string = '\uD869\uDED6';
echo unescape_utf16($string);
qui donne le caractère en UTF-8 (nécessite 4 octets car il est en dehors du BMP).
Si tout votre texte est UTF-16 (y compris les balises HTML, etc.), vous pouvez simplement indiquer au navigateur la sortie est en UTF-16:
header("Content-type: text/html; charset=UTF-16");
Ceci est très rare, car les scripts PHP ne peut pas être écrit en UTF-16 (à moins que PHP ne soit compilé avec un support multi-octets), ce qui rendrait l'impression de chaînes littérales gênante.
Ainsi, vous n'avez probablement qu'un morceau de texte en UTF-16 que vous voulez convertir en n'importe quel encodage que votre page Web utilise. Vous pouvez faire cette conversion avec:
//replace UTF-8 with your actual page encoding
mb_convert_encoding($string, "UTF-8", "UTF-16");
http://stackoverflow.com/questions/3506120/unicode-surrogate-pairs-question Cela ressemble à un dup. –