天天看点

php json_encode乱码及url传参中的一些小坑

在编码过程中、经常会用到json_encode来处理中文、但是、出现一个问题、中文都会被转码、变为” \u**** ”的格式、如何避免被转码、

1、PHP的版本为5.4以上;

echo json_encode( '中文' ); // "\u4e2d\u6587"
echo json_encode( '中文', JSON_UNESCAPED_UNICODE ); // "中文"
           

2、先把汉字urlencode转码、在json_encode; 然后urldecode解码;

echo $con = '中文'; // 中文
echo $con = urlencode( $con ); // %E4%B8%AD%E6%96%87"
echo $con = json_encode( $con ); // %E4%B8%AD%E6%96%87"
echo $con = urldecode( $con ); // "中文"
           

3、在url传参过程中,发生“+”替换问题

在url传参过程中,“+”会被替换为“ ”解决办法如下:

$name = str_replace(' ','+',$_REQUEST['name']);
           

或在传参之前,预先对变量urlencode处理,再在接收后对变量urldecode处理:

$a = "a+b";									
echo $a,'<br>';										#a+b
echo urlencode($a),'<br>';							#a%2Bb
echo urldecode(urlencode($a));						#a+b