全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

JSON中文乱码的原因和解决方案

发布时间:2023-11-24 15:46:32
发布人:xqq

一、编码问题

1、JSON 的编码格式默认为 UTF-8,而中文的编码格式是 GBK 或 GB2312。当使用 GBK 或 GB2312 编码格式的中文数据转为 JSON 数据格式后,在其他系统中再解析时,就会出现中文乱码的问题。


    {
        "name": "王五",
        "gender": "男",
        "age": "30"
    }

可以看到以上代码中的名字字段使用了中文,如果我们对其进行转换,如下所示:


    {
        "name": "\u738b\u4e94",
        "gender": "男",
        "age": "30"
    }

我们可以看到\u738b\u4e94这一部分就是 name 值的 Unicode 编码,而非我们希望的中文汉字。而如果在前端中对 JSON 数据进行解析时,就会出现中文乱码的问题。

所以我们需要在转换前,将中文数据转为UTF-8编码格式:


    $json = json_encode($data,JSON_UNESCAPED_UNICODE);

二、字符集设置

在PHP项目中,我们需要对字符集进行设置,避免因为字符集的不同而产生中文乱码。这里我们以 MySQL 数据库为例子:


    $conn = mysqli_connect($servername, $username, $password, $dbname);
    mysqli_set_charset($conn, "utf-8");

同时在应用程序的响应头信息中,也需要设置字符集为 UTF-8。


    header("Content-Type: text/html;charset=UTF-8");

三、前后端数据传输问题

在前后端进行数据传输时,我们需要确保传输的数据中没有非法字符,否则也会出现中文乱码的问题。在后端应用程序中可以使用JSON_UNESCAPED_UNICODE参数对数据进行编码,同时在前端对数据进行解码时,我们可以使用JSON.parse()方法:


    //PHP界面
    $json = '{"name":"张三"}';
    $data = json_decode($json,true);

    //JS界面
    var data = JSON.parse(unescape('<%=json%>'));

四、HTTP头部信息

在HTTP头部信息中我们需要设置正确的 Content-Type 和字符集:


    header('Content-Type:application/json;charset=utf-8');

五、统一使用UTF-8编码格式

我们需要确保服务器、数据库、应用程序和前端都是以UTF-8编码格式进行数据存储和传输,以避免编码格式在传输过程中的不兼容和导致的中文乱码问题。同时在前端页面使用UTF-8编码格式进行编码,可以有效避免浏览器解析JSON数据时出现乱码的情况。

六、小结

在JSON中文乱码问题的解决方案中,主要是从数据的编码格式、字符集设置、前后端数据传输、HTTP头部信息和统一使用UTF-8编码格式五个方面进行了详细的阐述,并提供了相应的代码示例。只有秉承着正确的编码格式和良好的代码规范,我们才能避免JSON中文乱码问题,并开发出高质量的应用程序。

lambdapeek

相关文章

RequestPart 全面解析

RequestPart 全面解析

2023-11-24
Unity Pro XL入门教程

Unity Pro XL入门教程

2023-11-24
linux相对路径咋写,linux中的相对路径

linux相对路径咋写,linux中的相对路径

2023-11-24
formdata格式传递参数详解

formdata格式传递参数详解

2023-11-24

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取