Home > Backend Development > PHP Problem > How to solve the problem of php json Chinese transcoding

How to solve the problem of php json Chinese transcoding

藏色散人
Release: 2023-03-03 12:46:01
Original
2827 people have browsed it

php json中文转码的解决办法:1、升级PHP;2、使用“urlencode”函数对汉字进行处理,再使用“json_encode”函数进行编码;3、对unicode码再进行解码。

How to solve the problem of php json Chinese transcoding

推荐:《PHP教程

php 解决json_encode中文UNICODE转码问题

用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如果想汉字不进行转码,这里提供三种方法

1.升级PHP,在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.

<?php
echo json_encode("中文", JSON_UNESCAPED_UNICODE);
//"中文"
Copy after login

2.把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。

$array = array(
&#39;test&#39;=>urlencode("我是测试")
);
$array = json_encode($array);
echo urldecode($array);
//{"test":"我是测试"}
Copy after login

3.对unicode码再进行解码,解码函数如下:

function decodeUnicode($str)
{
    return preg_replace_callback(&#39;/\\\\u([0-9a-f]{4})/i&#39;,
        create_function(
            &#39;$matches&#39;,
            &#39;return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");&#39;
        ),
        $str);
}
Copy after login

4.例子

$arr = array(&#39;name1&#39;:"中文",&#39;name2&#39;:&#39;abc12&#39;);
$jsonstr = decodeUnicode(json_encode($arr));
Copy after login

The above is the detailed content of How to solve the problem of php json Chinese transcoding. For more information, please follow other related articles on the PHP Chinese website!

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