最近做公司的ERP系统的二次开发,由于服务器上的PHP还是5.2版本,年代久远,遇到了一些坑,记录下来。
1.json 的中文乱码问题
php5.4以后才加入JSON_UNESCAPED_UNICODE这个参数,所以在php5.4前中文要经过urlencode编码处理,贴上实现代码
/**
* 转换json中文编码,兼容php5.4以下
*/
function json_encode_ch($arr){
return urldecode(json_encode($this->url_encode_arr($arr)));
}
function url_encode_arr($arr) {
if (is_array($arr)) {
foreach ($arr as $k => $v) {
$arr[$k] = $this->url_encode_arr($v);
}
}elseif (!is_numeric($arr) && !is_bool($arr)) {
$arr = urlencode($arr);
}
return $arr;
}
2.PDO读取数据库中文乱码问题。
在查询之前执行
PDO::exec("SET NAMES 'utf8';");