この記事では、PHP での json_encode の使用方法を紹介します。これは一定の参考値です。必要な友人はそれを参照できます。お役に立てば幸いです。
このような URL があると仮定します
$url = "https://www.baidu.com?key=你好";$data = ["url" => $url];echo json_encode($data);
このような出力を取得します
{"url":"https:\/\/www.baidu.com?key=\u4f60\u597d"}
まず、エンコード後に中国語が 16 進数になっていることがわかりました。これは文字化けではありません。次のように、元の結果を取得するために直接逆シリアル化するだけでよいため、変更されました:
//代码$jsonStr = '{"url":"https:\/\/ $data = json_decode($jsonStr); print_r($data);//输出stdClass Object ( [url] => https://www.baidu.com?key=你好)
これは文字化けしたコードではないことがわかりますので、このトピックについて話しましょう。文字化けではありません、16進数の合計を見ると読み取りに影響します
json_encode
//代码 $url = "https://www.baidu.com?key=你好";$data = ["url" => $url]; echo json_encode($data, JSON_UNESCAPED_UNICODE); //输出 {"url":"https:\/\/www.baidu.com?key=你好"}
にパラメータを追加できます 中国語は正常に表示できることがわかりましたが、バックスラッシュが自動的にエスケープされるというもう 1 つの問題があります。文字 \
は非常に不快に見えます。エスケープ文字を削除する方法はありますか?
//代码 $url = " $data = ["url" => $url]; echo json_encode($data, JSON_UNESCAPED_SLASHES); //输出 {"url":"https://www.baidu.com?key=\u4f60\u597d"}
今度はエスケープです。文字は削除されましたが、中国語の文字は再び 16 になります。システム、エスケープ文字を削除して中国語を正常に表示したいです。
*nix のような権限管理に触発されて、XOR 演算が使用できることがわかりました
//代码$url = " $data = ["url" => $url]; echo json_encode($data, JSON_UNESCAPED_UNICODE ^ JSON_UNESCAPED_SLASHES); //输出 {"url":"https://www.baidu.com?key=你好"}
仕事を終わらせるために。
さらに、
JSON_UNESCAPED_UNICODE
|JSON_UNESCAPED_SLASHES
の特殊性により、これらはすべて 1 < < n に渡されるためです。 (nは整数)
が得られるので、XOR演算だけでなく直接足し算も使えます
//该等式为true((1<<1) ^ (1<<2)) === ((1<<1) + (1<<2))
おすすめ関連記事:
php は、curl を使用して POST アドレスを受け取る方法、つまりインターフェイスを作成する方法
以上がPHP での json_encode の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。