A better solution to json_encode UTF-8 Chinese garbled characters in php, _PHP tutorial

WBOY
Release: 2016-07-13 10:18:01
Original
953 people have browsed it

A better solution to json_encode UTF-8 Chinese garbled characters in php,

I have recently used json_encode in the interface code. I found on the Internet that if the json_encode encoding is set to UTF-8 Chinese, it will not be garbled. It has been verified that this method is indeed effective, but I don’t know why. It doesn’t work that well after a while. 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 the 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;

}
Copy after login

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

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

*

* 使用特定function对数组中所有元素做处理

* @param string &$array 要处理的字符串

* @param string $tocode 编码后

* @param string $oldcode 编码前

* @param string $function 要执行的函数

* @return boolean $apply_to_keys_also 是否也应用到key上

* @return array $array 是否也应用到key上

* @access public

*

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

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

{

foreach ($array as $key => $value) {
(www.jb51.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.bkjia.com/phper/31/66729.htm**********************************************************

*

* 将数组转换为JSON字符串(兼容中文)

* @param array $array 要转换的数组

* @return string 转换得到的json字符串

* @access public

*

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

function JSON($array) {

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

$json = json_encode($array);

return urldecode($json);

}
Copy after login

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/886146.htmlTechArticleA better solution to json_encode UTF-8 Chinese garbled characters in php. I have recently used json_encode in the interface code. I found on the Internet that if the json_encode encoding is set to UTF-8 Chinese, it will not be garbled...
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!