ユニコード (UTF-16) の値と PHP/XML で多くの問題を抱えています。XML から一連の Unicode 値を読み取り、正しいグリフをブラウザーに出力したいと考えています。UTF-8 で試してみましたが、同じ問題が発生します。
これは、最初のテストで使用した簡単な作業例です。
$text = "\x00\x41";
$text = mb_convert_encoding($text, "ASCII", "UTF-16");
echo $text;
上記のコードの出力:
A
ただし、XML から値を取得しようとすると、動作が停止します。
XML:
<glyphs>
<code>0041</code>
<code>0042</code>
<code>0043</code>
<code>0044</code>
<code>0045</code>
<code>0046</code>
</glyphs>
PHP では、上記の xml から各値を読み取り、\x00\x41 などのペアと形式に分割します。
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.';
}
ブラウザでの出力:
\x00\x41
????
\x00\x42
????
\x00\x43
????
\x00\x44
????
\x00\x45
????
\x00\x46
????
疑問符は、A、B、C、D、E、F である必要があります。
私は何を間違っていますか?
ありがとう。