php json 中文问题
php中内置函数json_encode提供把一个array转化为json字符串的功能。网上看到很多人说不能处理中文,这种说法其实是不对的,关键是要看php源文件的编码方式,对于非UTF8的php源文件,中文确实会有问题,反之能正常工作,为什么会这样呢,php手册上说的很清楚
This function only works with UTF-8 encoded data.
对于使用utf8作为文件编码方式的人,可以直接忽视中文问题,那么采用GBK或GB2312的怎么办?要么修改文件的编码方式,往往这个不太显示,总不能为了这个问题把一个项目都修改成UTF-8,另外的一个办法是借助urlencode、urldecode在转换一下,urlencode是把原字符串转换为UTF8格式编码,这就满足了json_encode支持UTF8的需求,而urldecode是把UTF8编码转换成当前字符编码。所以在进行json_encode前先把array中的字符串使用urlencode,然后执行json_encode,接着使用urlencode把json_encode结果进行解码。实例代码如下:
function arrayEncode(&$arr) {
foreach ($arr as $k => $v) {
if (is_array($v)) {
arrayEncode($arr[$k]);
} else {
$arr[$k] = urlencode($v);
}
if (is_string($k)) {
$nk = urlencode($k);
if ($nk != $k) {
$arr[$nk] = $arr[$k];
unset($arr[$k]);
}
}
}
}
function my_json($arr) {
arrayEncode($arr);
return urldecode(json_encode($arr));
}
欢迎转载,转载请注明文章出处,谢谢!

