/** * Function and JS unescape function, decode the data after escape encoded * @param $str*/ functionUnescape ($str) { $ret= ' '; $len=strlen($str); for($i= 0;$i<$len;$i++) { if($str[$i] = = '% ' &&$str[$i+ 1] = = ' U ') { $val=Hexdec(substr($str,$i+ 2, 4)); if($val< 0x7f) $ret.=CHR($val); Else if($val< 0x800) $ret.=CHR(0xc0 | ($val>> 6)).CHR(0x80 | ($val& 0x3f)); Else $ret.=CHR(0xe0 | ($val>> 12)).CHR(0x80 | (($val>> 6) & 0x3f).CHR(0x80 | ($val& 0x3f)); $i+ = 5; } Else if($str[$i] = = '% ') { $ret.=UrlDecode(substr($str,$i, 3)); $i+ = 2; } Else $ret.=$str[$i]; } return $ret;} /** * function is JS escape PHP implementation * @param $string the sting want to be escaped* @param $in _encoding * @param $out _encoding*/ functionEscape$string,$in _encoding= ' UTF-8 ',$out _encoding= ' UCS-2 ') { $return= ' '; if(function_exists(' Mb_get_info ')) { for($x= 0;$x< Mb_strlen ($string,$in _encoding);$x++) { $str= Mb_substr ($string,$x, 1,$in _encoding ); if(strlen($str) > 1) {//multi-byte characters $return. = '%u '.Strtoupper(Bin2Hex(Mb_convert_encoding ($str,$out _encoding,$in _encoding ) ) ); } Else { $return. = '% '.Strtoupper(Bin2Hex($str ) ); } } } return $return;}
This code is tested to display Chinese correctly.
PHP decoding JS using the escape transcoding function