2

次のコードを見てください。

<?php
    function unicode_decode($str){

            return preg_replace("/\\\u([0-9A-F]{4})/ie", "iconv('utf-16', 'utf-8',hex2str(\"$1\"))", $str);    

    }

function hex2str($hex) {

    $r = '';

    for ($i = 0; $i < strlen($hex) - 1; $i += 2)

    $r .= chr(hexdec($hex[$i] . $hex[$i + 1]));

    return $r;

}
$var="\u092e\u0941\u0930\u0932\u0940 \u0938\u093e\u0930";
$var =  unicode_decode($var);
echo $var;
?>

このコードは Windows ホスティングで完全に機能し、出力は "मुरली सार" です。ただし、ホストしている Linux では、その出力はランダムで、漢字のように「⸉䄉〉㈉䀉 㠉㸉」と表示されます。Linuxホスティングはphpのinconv機能では動かないようです。

Linuxホスティングでこの問題を解決するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1