Home  >  Article  >  Backend Development  >  json_encode UTF-8 Chinese garbled problem in php, _PHP tutorial

json_encode UTF-8 Chinese garbled problem in php, _PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:18:461156browse

json_encode UTF-8 Chinese garbled problem in php.

Recently I have used json_encode in the interface code. I found on the Internet that json_encode encoding is set to UTF-8 Chinese and it will not work. Garbled code, it has been proven that this method is indeed effective, but I don’t know why, the code doesn’t work very well after using it for a period of time. The following is my own solution to json_encode. If you have a better method, please share it!

First type:

This is a simple code conversion, and then return the required array after urlcode

This is enough for my code.

The code is as follows Copy code
public static function encodeOperations ($array)

{

foreach ((array)$array as $key => $value) {

if (is_array($value)) {

encodeOperations($array[$key]);

} else {

$array[$key] = urlencode(mb_convert_encoding($value,'UTF-8','GBK'));

}

}

return $array;

}

Second type:

I saw this on the Internet, and there were comments saying that there will be infinite loop problems, but this is obviously very comprehensive, and after I tested it, it did happen. I post it here for reference only

The code is as follows Copy the code

/***************************************************** **********

*

* Use a specific function to process all elements in the array

* @param string &$array The string to be processed

* @param string $tocode encoded

* @param string $oldcode before encoding

* @param string $function The function to be executed

* @return boolean $apply_to_keys_also whether it is also applied to keys

* @return array $array Whether it is also applied to key

* @access public

*

************************************************* **************/

function encodeOperations (&$array, $function, $tocode=false,$oldcode=false,$apply_to_keys_also = false)

{

foreach ($array as $key => $value) {
(www.111cn.net)
if (is_array($value)) {

encodeOperations($array[$key], $function, $apply_to_keys_also);

} else {

if($tocode&&$oldcode) {

if(function_exists(mb_convert_encoding)) {

$value = mb_convert_encoding($value,$tocode,$oldcode);

}else{

return "error";

}

}

$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]);

}

}

}

return $array;

}

/****from:http://www.111cn.net/phper/31/66729.htm************************************ *******************************

*

* Convert array to JSON string (compatible with Chinese)

* @param array $array The array to be converted

* @return string converted json string

* @access public

*

************************************************* **************/

function JSON($array) {

arrayRecursive($array, 'urlencode', true);

$json = json_encode($array);

return urldecode($json);

}

If null is returned for Chinese, we need to convert the characters into uft8 or use urlencode to compile first.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/882088.htmlTechArticlejson_encode UTF-8 Chinese garbled problem in php. I have recently used json_encode in the interface code. I found it on the Internet. If the json_encode encoding is set to UTF-8 Chinese, it will not be garbled. This has been verified...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn