php的json_encode()中文编码问题

今天,看东西,突然看到之前写的代码,得记录下来,不然又遗忘了!

php 5.4.0之前,json_encode() 是不支持 中文编码的

5.4.0之后,json_encode()新增了 JSON_UNESCAPED_UNICODE 选项,支持了中文,我们得写一个兼容函数:

function ijson_encode($value, $options = 0) {
	if (empty($value)) {
		return false;
	}
	if (version_compare(PHP_VERSION, '5.4.0', '<') && $options == JSON_UNESCAPED_UNICODE) {
		$json_str = preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", json_encode($value));
	} else {
		$json_str = json_encode($value, $options);
	}
	return addcslashes($json_str, "\\\'\"");
}
光上面还不行,得注意  JSON_UNESCAPED_UNICODE,这个常量,在<5.4.0应该是没有的,我们得定义。

/*
 * 兼容 <5.4.0 版本,json_encode() 中文转为unicode编码问题。添加 JSON_UNESCAPED_UNICODE 常量
 */
if (!defined('JSON_UNESCAPED_UNICODE')) {
	define('JSON_UNESCAPED_UNICODE', 256);<span style="white-space:pre">	</span>// php定义该常量为256
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值