用Extjs接收PHP服务端返回的Json结果时,发现只要是汉字(从SQLServer取得)都是空字符,很是纳闷。后来看json_encode的文档才知道,它只能编码UTF-8的字符。这个问题就是返回的字符是GB2312,怎么变为UTF-8,并且最好是将整个数组进行UTF-8的转换。经过搜索有以下代码完成:
- function encodeUTF8($array)
- {
- foreach($array as $key=>$value)
- {
- if(!is_array($value))
- {
- $array[$key]=mb_convert_encoding($value,"UTF-8","GBK");
- }
- else
- {
- encodeUTF8($array[$key]);
- }
- }
- return $array;
- }
每次返回结果时:
- echo '{"total":"'.$rscount.'","results":'.json_encode(encodeUTF8($result)).'}';
原文讨论在:这里。