请查看以下代码:
<?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 主机中解决这个问题?提前致谢。