来源于frederic_zhao 的回帖
传递中文参数前需要escape转一下
接收时在转换回来
-
PHP code
-
function unicode_urldecode2( $url ) { preg_match_all ( ' /%u([[:alnum:]]{4})/ ' , $url , $a ); foreach ( $a [ 1 ] as $uniord ) { $dec = hexdec ( $uniord ); $utf = '' ; if ( $dec < 128 ) { $utf = chr ( $dec ); } else if ( $dec < 2048 ) { $utf = chr ( 192 + (( $dec - ( $dec % 64 )) / 64 )); $utf .= chr ( 128 + ( $dec % 64 )); } else { $utf = chr ( 224 + (( $dec - ( $dec % 4096 )) / 4096 )); $utf .= chr ( 128 + ((( $dec % 4096 ) - ( $dec % 64 )) / 64 )); $utf .= chr ( 128 + ( $dec % 64 )); } $url = str_replace ( ' %u ' . $uniord , $utf , $url ); } return urldecode ( $url ); }