次のコードを見てください。
<?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ホスティングでこの問題を解決するにはどうすればよいですか? 前もって感謝します。