PHP中json encode中文編碼的問題

2021-09-08 02:44:11 字數 1135 閱讀 6158

php的json擴充套件自帶的json_encode函式,如果對含有中文的字元進行編碼時,會自動轉換成unicode編碼。

<?php

$a = array('city' => "北京\"'\abcd天津");

echo json_encode($a) . "\n";

?>

debian-test-server:/home/php# php test1.php

現在有這樣乙個需求,資料庫中某個字段可以儲存多個值,這樣需要將資料用json編碼以後儲存在資料庫中,用php內建的json_encode函式處理以後中文變成了unicode碼(比如),雖然網頁上面能正確處理,但是從手機同步過來的資料是漢字(比如),而不是unicode,為了從兩個地方傳遞過來的資料在資料庫中以相同的編碼儲存,現在暫時考慮將unicode碼轉換為漢字或是自定義乙個json_encode函式,此函式不會將中文轉換為unicode碼。

在 php的官方**

上面找到乙個函式,可以解決上述所說的需求,也就是將資料轉換json,而且中文不會被轉換為unicode碼。

/*** 由於php的json擴充套件自帶的函式json_encode會將漢字轉換成unicode碼

* 所以我們在這裡用自定義的json_encode,這個函式不會將漢字轉換為unicode碼

*/function customjsonencode($a = false)

if (is_string($a)) else

}$islist = true;

for ($i = 0, reset($a); $i < count($a); $i++, next($a))

}$result = array();

if ($islist) else ';}}

$a = array('a' => array('c' => '中\\"\'國', 'd' => '南韓'), 'b' => '日本');

echo customjsonencode($a) . l;

$b = array(array('c' => '中\\"\'國', 'd' => '南韓'), '日本');

echo customjsonencode($b) . l;

output:

,"b":"日本"}

[,"日本"]

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中文編碼問題

現象 眾所周知使用json encode可以方便快捷地將物件進行json編碼,但是如果物件的屬性中存在著中文,問題也就隨之而來了。json encode會將中文轉換為unicode編碼,例如 胥 經過json encode處理後變為 u80e5 最終的json中中文部分被替換為unicode編碼。我...

PHP中json encode的使用心得

假設有這麼乙個url url 你好 data url url echo json encode data 得到這樣的輸出 首先發現中文經過encode之後變成了16進製制,這不是亂碼,只是單純現實方法變了,因為只需要直接通過反序列化就能得到原結果,如下 jsonstr data json decod...