PHP5.4中json_encode中文转码的变化小结

下面给您简单介绍一下“PHP5.4中json_encode中文转码的变化小结”这个主题的攻略。

什么是json_encode()?

json_encode() 是PHP语言提供的一个函数,它用于将PHP数据转换为json格式。

PHP5.4中json_encode中文转码的变化

在 PHP 5.4 版本之前,json_encode() 函数对于非 ASCII 字符,如中文,会隐式地将其转换为 Unicode 编码(使用 \u 开头的 6 位16进制数来表示每个字符),这就意味着json_encode() 输出的 json 文件中会包含大量的 Unicode 编码。在 PHP5.4 以后,json_encode() 函数增加了一个新的选项参数 $options,允许我们以更自由的方式控制转码行为。

具体来说,PHP5.4中新增了JSON_UNESCAPED_UNICODE选项参数,如果将这个参数传递给json_encode()函数,那么非 ASCII 字符就会直接输出,而不再被转码为 Unicode 编码。而且如果在 JSON 字符串中出现了非法字符(例如 0x01),这些字符也将被直接输出,而不会像原来那样转换为 Unicode 编码,以保证最终生成的 JSON 字符串的正确性。具体使用方法可以参考下面的示例代码:

<?php
$cn_str = "这是一个中文字符串";
$en_str = "This is a english string";
$arr = array("cn_str"=>$cn_str, "en_str"=>$en_str);

//将中文字符串转换为json串时,使用下面的方式可以使非ascii字符不被转换为Unicode编码
$json_str = json_encode($arr, JSON_UNESCAPED_UNICODE);

echo $json_str;//输出:{"cn_str":"这是一个中文字符串","en_str":"This is a english string"}

?>

在示例代码中,JSON_UNESCAPED_UNICODE选项参数被作为json_encode()的第二个参数传递进去,从而将非 ASCII 字符以原始的形式输出。这样一来,json串中的中文字符串就会显示正确的中文字符,而不是Unicode编码了。

实际应用

我们可以将转换后的json串来自于HTML格式的内容,或是关系型数据库的数据,以便与与它们打交道的Web前端程序交互。以下是从MySQL数据表中读取数据,并将它们转换为json串的实例代码:

<?php

//连接MySQL数据库
$con = mysqli_connect("localhost", "username", "password", "database_name");

//从user表中获取数据
$result = mysqli_query($con, "SELECT * FROM user");

//将数据转换为json串
$data = array();
while($row = mysqli_fetch_array($result)){
    $data[] = $row;
}
$json_str = json_encode($data, JSON_UNESCAPED_UNICODE);

echo $json_str;

//关闭数据库连接
mysqli_close($con);

?>

在这个示例中,我们使用了mysqli连接MySQL数据库,查询了名为“user”的数据表,并将其中所有的数据都读取到了一个数组中。然后,我们调用了json_encode()函数将这些数据转换成了json格式。由于使用了JSON_UNESCAPED_UNICODE 选项参数,所以输出的 json 串中的中文字符以原始形式输出,到前端进行数据呈现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP5.4中json_encode中文转码的变化小结 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言 超详细讲解链接器

    C语言 超详细讲解链接器 什么是链接器 在C语言编写代码时,我们往往需要调用一些库函数,比如printf、malloc等等。这些库函数在我们的代码文件中并没有实现,而是存储在系统或其他库文件中,我们需要通过链接器把这些函数与我们编写的代码组合在一起,生成可执行程序。 链接器主要负责以下两个任务:- 符号解析:将目标文件中引用的符号与定义的符号建立联系。- 符…

    C 2023年5月23日
    00
  • c语言实现奇偶排序算法

    下面是详细讲解“c语言实现奇偶排序算法”的完整攻略: 什么是奇偶排序算法 奇偶排序算法,也称为奇偶交换排序算法,是一种简单的排序算法。它的特点是同时进行奇数与偶数位置的元素比较和交换,直到序列有序为止。 奇偶排序算法的实现 奇偶排序算法的实现过程可以分为两个阶段,一阶段是进行奇偶位置上元素的比较和交换,二阶段是将相邻的元素比较和交换,两个阶段交替执行,直到序…

    C 2023年5月23日
    00
  • JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】

    下面是“JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】” 的完整攻略: 1. 什么是JSON数组? JSON是JavaScript Object Notation的简称,是一种数据交换格式,常用于网络传输和存储数据。JSON数组则是一种由多个JSON对象组成的数据结构,每个对象之间以逗号分隔,整体用方括号包裹。 示例: [ { "n…

    C 2023年5月23日
    00
  • 荣耀畅玩8C手机做工如何?荣耀畅玩8C手机拆机全过程评测

    荣耀畅玩8C手机做工评测 1. 外观设计 荣耀畅玩8C手机的外观设计非常简洁,采用了流行的刘海屏设计。机身采用金属材质,整体质感比较好。机身厚度较薄,手感舒适。机身背面还配有指纹识别器,方便快捷。 2. 屏幕 荣耀畅玩8C手机采用了6.26英寸的高清显示屏,分辨率达到了720 x 1520像素。屏幕质量很不错,色彩鲜艳度和亮度都很高。观看视频、浏览图片时非常…

    C 2023年5月23日
    00
  • C语言之结构体定义 typedef struct 用法详解和用法小结

    C语言之结构体定义 typedef struct 用法详解和用法小结 在C语言中,结构体是一种自定义的数据类型,它可以包含多个不同类型的变量,并被视为一个整体。但是,直接定义结构体并不方便,因此可以使用typedef struct来定义结构体类型,使代码更加简洁和易读。 typedef struct的基本用法 typedef struct的语法格式为: ty…

    C 2023年5月22日
    00
  • C语言实现高精度加减法

    C语言实现高精度加减法 简介 高精度计算是指多位数的加、减、乘、除等算法。在计算机程序设计中,常常需要进行高精度计算。C语言是一种强大的编程语言,可以通过C语言实现高精度的加、减法运算。 实现思路 1. 字符串存储 高精度计算需要用到大量的数字,超过了C语言中能够表示的整型、浮点型数据类型范围,因此可以采用字符串存储数字。 2. 进位处理 在高精度计算中,进…

    C 2023年5月23日
    00
  • Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法

    针对“Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法”,我们可以采用以下步骤: 在AndroidManifest.xml中添加必要的权限声明: <uses-permission android:name="android.permission.INTERNET" /> <uses-permi…

    C 2023年5月23日
    00
  • C++学习进阶篇之类大小计算和this指针

    C++学习进阶篇之类大小计算和this指针 类大小计算 在C++中,类的大小计算是非常重要的。一个类的大小包括它所占用的存储空间以及它所包含的成员变量所占用的存储空间。在计算类的大小时,通过以下几个方面来确定: 子对象的大小 虚拟函数表指针的大小 数据成员的大小 子对象的大小 类可能会继承其他类,所以需要考虑子对象的大小。子对象的大小实际上是在编译时计算的,…

    C 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部