php教程 php手册 PHP json_encode()函数json不转义中文问题解决办法

PHP json_encode()函数json不转义中文问题解决办法

Jun 02, 2016 am 09:14 AM
json_encode

json_encode函数对于gbk中的中文字符是不会转换的或直接转换成空格了,下面我来给各位整理一个关于json不转义中文问题处理技巧,希望例子能帮助到大家.

如果你调用 PHP 自带的 json_encode() 函数,碰到中文时,中文会被转义掉,例如:

echo json_encode(array('你好'));// 输出: ["\u4f60\u597d"]

这非常恼人,像是一堆乱码,JSON 标准从来没有说要把非 ASCII 字符转义,标准说的是"Any UNICODE character".

如何禁用掉这种转义呢? 答案是,PHP 自带的 json_encode() 不能禁用这个特性(在 5.4.0 版本之前,之后的版本你可以加 JSON_UNESCAPED_UNICODE 选项),你只能换一个新的 JSON 库,为了简单,我简单写了几十行代码,实现一个 json_encode(),代码如下:

class Util 
{ 
    static function json_encode($input){ 
        // 从 PHP 5.4.0 起, 增加了这个选项. 
        if(defined('JSON_UNESCAPED_UNICODE')){ 
            return json_encode($input, JSON_UNESCAPED_UNICODE); 
        } 
        if(is_string($input)){ 
            $text = $input; 
            $text = str_replace('\\', '\\\\', $text); 
            $text = str_replace( 
                array("\r", "\n", "\t", "\""), 
                array('\r', '\n', '\t', '\\"'), 
                $text); 
            return '"' . $text . '"'; 
        }else if(is_array($input) || is_object($input)){ 
            $arr = array(); 
            $is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1)); 
            foreach($input as $k=>$v){ 
                if($is_obj){ 
                    $arr[] = self::json_encode($k) . ':' . self::json_encode($v); 
                }else{ 
                    $arr[] = self::json_encode($v); 
                } 
            } 
            if($is_obj){ 
                return '{' . join(',', $arr) . '}'; 
            }else{ 
                return '[' . join(',', $arr) . ']'; 
            } 
        }else{ 
            return $input . ''; 
        } 
    } 
}
로그인 후 복사

考虑不到的地方,例如判断关联数组(is_obj)的地方,遇到问题再说,你要是不喜欢类,那就自己转成纯函数,换个名字吧.


文章网址:

随意转载^^但请附上教程地址。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)