Home > php教程 > PHP开发 > body text

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

高洛峰
Release: 2017-04-01 15:26:26
Original
1610 people have browsed it

Json_encode has been used recently in interface code, and I found json_encode encoding on the Internet Setting it to UTF-8 Chinese will prevent garbled characters. It has been proven that this method is indeed effective, but for some reason, the code does not work well after using it for a while. Here is my own solution to json_encode. Please share the good method!

The first one:

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

My code is enough.

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

The second type:

I saw this on the Internet, and then there were comments. There will be an infinite loop problem, but this is obviously very comprehensive, and it did happen after I tested it. It is posted 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.jb51.net/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

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

For more related articles on better solutions to json_encode UTF-8 Chinese garbled characters in php, please Follow PHP Chinese website!

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 Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template