今天,看东西,突然看到之前写的代码,得记录下来,不然又遗忘了!
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
}