PHP中json encode的使用心得

2021-08-22 04:36:02 字數 1447 閱讀 1646

假設有這麼乙個url

$url = "你好";

$data = ["url" => $url];

echo json_encode($data);

得到這樣的輸出

首先發現中文經過encode之後變成了16進製制,這不是亂碼,只是單純現實方法變了,因為只需要直接通過反序列化就能得到原結果,如下:

//**

$jsonstr = '';

$data = json_decode($jsonstr);

print_r($data);

//輸出

stdclass object

( [url] => 你好

)

可見這不是亂碼,那麼接下來說一說正題,雖然不是亂碼,但是看著16進製制總是影響閱讀

可以在json_encode加乙個引數

//**

$url = "你好";

$data = ["url" => $url];

echo json_encode($data, json_unescaped_unicode);

//輸出

發現中文可以正常顯示了,但是還有乙個問題就是反斜槓被自動加了轉義字元\

看著也挺難受的,有沒有方法可以把轉義符去掉

//**

$url = "你好";

$data = ["url" => $url];

echo json_encode($data, json_unescaped_slashes);

//輸出

現在轉義符去掉了,但是中文又變成16進製制了,我想既去掉轉義符,又正常顯示中文怎麼辦

受到*nix-like許可權管理的啟發,發現可以用異或運算

//**

$url = "你好";

$data = ["url" => $url];

echo json_encode($data, json_unescaped_unicode ^ json_unescaped_slashes);

//輸出

完事。

另外補充一下,

因為json_unescaped_unicode|json_unescaped_slashes這幾個值的特殊性,因為都是通過1 << n (n為乙個整數)得到的,所以不僅可以用異或運算,也可以直接使用加法

//該等式為true

((1<<1) ^ (1

<<2)) === ((1

<<1) + (1

<<2))

php中自帶函式 json encode

php場景中,需要將陣列轉為json字串,就需要用到php自帶的json encode函式 但是當陣列中含有中文字串時,轉出來的結果卻是以下結果 1 tmparr array 4 name 長褲 5 color blue 6 size xl 7 title 中年 長褲 8 910 tmpjson j...

PHP中json encode中文編碼的問題

php的json擴充套件自帶的json encode函式,如果對含有中文的字元進行編碼時,會自動轉換成unicode編碼。a array city 北京 abcd天津 echo json encode a n debian test server home php php test1.php 現在有...

PHP中json encode中文編碼的問題 學習

由於php的json擴充套件自帶的函式json encode會將漢字轉換成unicode碼 所以我們在這裡用自定義的json encode,這個函式不會將漢字轉換為unicode碼 public function customjsonencode a false if is string a els...