This article mainly introduces the solution for php json Chinese encoding to null. For more information, see use the json_encode function today.
Cause Analysis: The json_encode function should be UTF-8 encoded. my page uses gbk.
Solution: Use the iconv ('gbk', 'utf8') function before the json_encode function. Function
Function gbk2utf8 ($ data) {if (is_array ($ data) {return array_map ('gbk2utf8', $ data);} return iconv ('gbk ', 'utf-8', $ data);} // The following is another method.
The field obtained by PHP from the database is in Chinese and is returned to the foreground after json_encode () is used. However, after json_encode is encoded in Chinese, it is null.
The json_encode () built-in function (php> 5.2) in php can be used to transmit and use data in php with other languages.
This function converts a value to a json data storage format.
'Age', 'age' => 20); $ jsonencode = json_encode ($ arr); echo $ jsonencode;?>
The program running result is as follows:
{"Name": null, "Age": 20}
In the json_encode function, Chinese characters are encoded as null. after Google, it is very simple. to work closely with the front-end, Json only supports UTF-8 encoding. I think the front-end Javascript is also the reason for UTF-8 encoding.
Iconv ('gb2312', 'utf-8', 'Here is the Chinese title'), 'body' => 'abcd... '); echo json_encode ($ array);?>
The running result of this program is:
{"Title": "\ u8fd9 \ u91cc \ u662f \ u4e2d \ u6587 \ u6807 \ u9898", "body": "abcd ..."}
All Chinese characters in the array are lost after json_encode or \ u2353 is displayed.
The solution is to use the urlencode () function to process the following. before json_encode, urlencode () is used to process all the content in the array, and json_encode () is used to convert the content into a json string, finally, use urldecode () to convert the encoded Chinese characters back.
1000) {die ('possible deep recursion attack');} foreach ($ array as $ key => $ value) {if (is_array ($ value )) {arrayRecursive ($ array [$ key], $ function, $ apply_to_keys_also);} else {$ array [$ key] = $ function ($ value );} if ($ apply_to_keys_also & is_string ($ key) {$ new_key = $ function ($ key); if ($ new_key! = $ Key) {$ array [$ new_key] = $ array [$ key]; unset ($ array [$ key]) ;}}$ recursive_counter --;} /*************************************** * ************************ convert an array to a JSON string (compatible with Chinese characters) * @ param array $ array the array to be converted * @ return string the converted json string * @ access public ***************** **************************************** * ***/function JSON ($ array) {arrayRecursive ($ array, 'urlencode', true); $ json = json _ Encode ($ array); return urldecode ($ json);} $ array = array ('name' => 'xia', 'age' => 20 ); echo JSON ($ array);?>
The operation is successful. The result is as follows:
{"Name": "Sia", "Age": "20 "}