PHP JSON编码后,中文乱码的解决方式

本文介绍了解决PHP中使用json_encode时遇到的中文乱码问题。通过使用urlencode及urldecode函数组合的方式,实现JSON数据正确编码和解码,确保了中文字符能够正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,有些时候,需要写接口,传递一些中文值,那么JSON编码,会出现目前以下两种情况!

    a.输出乱码

<?php
    $testJSON=array('name'=>'中文字符串','value'=>'test');  
    echo json_encode($testJSON);  
?> 
输出结果:{“name”:”\u4e2d\u6587\u5b57\u7b26\u4e32″,”value”:”test”}

    b.不输出乱码

    使用UTF8编码的字符,使用json_encode也出现了中文乱码。解决办法是在使用json_encode之前把字符用

    函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:

<?php  
    $testJSON=array('name'=>'中文字符串','value'=>'test');  
    //echo json_encode($testJSON);  
    $testJSON=ReturnUrlencode($testJSON);


	/**
	 * [ReturnUrlencode 用递归的方式来遍历所有的数组并且解析]
	 * @param [type] $arr [description]
	 */
	function ReturnUrlencode($arr){
		foreach ($arr as $key => $value){
			if(is_array($value)){	
				$arr[$key]=ReturnUrlencode($value);
			}else{
				$arr[$key]=urlencode($value);
			}
		}
		return $arr;
	}

    print_r(urldecode ( json_encode ( $testJSON ) ) );  
?> 
输出结果:{“name”:”中文字符串”,”value”:”test”}

 遍历递归算法!将数组中的所有值,urlencode!

 

转载于:https://my.oschina.net/Peron/blog/348578

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值