J'ai beaucoup de problèmes avec les valeurs Unicode (UTF-16) et PHP/XML. Je souhaite lire un ensemble de valeurs Unicode à partir de XML et afficher les glyphes corrects dans le navigateur. J'ai essayé avec UTF-8 et j'ai le même problème.Lecture de valeurs UTF-16 (ou UTF-8) à partir de XML et affichage du résultat avec PHP
Ceci est un exemple de travail simple, j'ai utilisé pour mon premier test:
$text = "\x00\x41";
$text = mb_convert_encoding($text, "ASCII", "UTF-16");
echo $text;
sortie du code ci-dessus:
A
Cependant, lorsque je tente d'obtenir les valeurs des choses XML cessent de fonctionner .
XML:
<glyphs>
<code>0041</code>
<code>0042</code>
<code>0043</code>
<code>0044</code>
<code>0045</code>
<code>0046</code>
</glyphs>
en php je lis chaque valeur du xml ci-dessus, divisé en paires et le format, par exemple \ X00 \ x41, etc.
PHP:
// load xml
$xml = simplexml_load_file('encoding.xml');
if ($xml) {
// get families
foreach($xml->children() as $item) {
$pairs = str_split($item, 2);
$hex = "\x" . $pairs[0] . "\x" . $pairs[1];
// check value...
echo $hex . '<br/>';
$text = mb_convert_encoding($hex, "ASCII", "UTF-16");
echo $text;
}
}
else {
return 'The input is malformed.';
}
sortie dans le navigateur:
\x00\x41
????
\x00\x42
????
\x00\x43
????
\x00\x44
????
\x00\x45
????
\x00\x46
????
points d'interrogation doit être A, B, C, D, E, F.
Qu'est-ce que je fais mal?
Merci.
Le code de DB est en train de convertir en utf-16, donc je spécifierais que charset plutôt que utf-8. –
Oui, le jeu de caractères est défini. –