PHP json_encode()函数json不转义中文问题解决办法
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
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
4週間前
By DDD
R.E.P.O.ファイルの保存場所:それはどこにあり、それを保護する方法は?
1 か月前
By DDD
R.E.P.O.最高のグラフィック設定
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
2週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7385
15


Java チュートリアル
1629
14


CakePHP チュートリアル
1357
52


Laravel チュートリアル
1267
25


PHP チュートリアル
1216
29

