php返回中文是 u,php json_encode总是返回unicode字符 "u."问题 解决

遇到一个PHP编码问题,代码中的汉字在json_encode后变成了Unicode编码,如"u767bu5f55u5931u8d25"。为了解决这个问题,可以使用提供的公共静态函数JSON,通过正则替换将Unicode编码转换为UTF-8。此方法适用于低版本PHP,高版本PHP可以通过设置参数解决。完整示例代码和解决方案来源于Stack Overflow。
摘要由CSDN通过智能技术生成

最近遇上了一件怪事,前两天写的好好的代码,今天再运行就乱码了。查了一下,不是一般意义的乱码,而是返回的unicode编码的字符。

如汉字:登录失败,经过json_encode之后返回变成:"\u767b\u5f55\u5931\u8d25"

实在气死杂家,找了一通,发现这是个普遍问题,最终解决方法如下:

正常调用json_encode($arr),在echo之间,将这个json数据通过以下函数处理下:

public static function JSON($str){

$json = json_encode($str);

return preg_replace("#\\\u([0-9a-f]+)#ie","iconv('UCS-2','UTF-8', pack('H4', '\\1'))",$json);

}

这样就再也不乱码了。对于高版本php,可以直接加个参数,但对低版本无效,所以只能这样。完整代码如下:

调用示例:

// echo "登录失败";$arr = array ();$arr ['code'] = - 1;$arr ['message'] = "登录失败";echo $arr ['message'];$arr ['data'] = "";return util::JSON ( $arr );

参考: http://stackoverflow.com/questions/6771938/any-way-to-return-php-json-encode-with-encode-utf-8-and-not-unicode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值