踩坑:PHP json_encode()的版本变动

本文记录了从PHP5.4.6升级至5.6或更高版本时遇到的中文乱码问题及解决过程。主要原因是数据库取数据未指定utf8编码,导致返回值错误。通过设置mysqli连接编码为utf8,成功解决了乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

整理一下今天遇见的坑。
故事是这样的,今天因为要使用阿里的短信接口api,所以后台的php版本需要升级到5.5以上,原先是5.4.6。
所以肯定果断 yum remove php*
然后 yum install #¥%……&
然后 php -v
哎,然后就发现 更换版本完成了,就觉得不可能这么顺利。
然后运行了一下phpinfo,哎还真行。
然后把之前就服务器上的php代码搬过来。
故事就开始了。。。
原先5.4.6能运行的 到了php7就完蛋了?
然后我换成了5.6然而还是不行
这时候我意识到了严重性

在网上查到了官方文档:

1.png

可以看到在5.5版本增加了:失败时返回的值从 null 字符串改成 FALSE。

原因:

php从mysql数据库中取出数据如果不指定编码方式为utf8那么中文将会变成”?”。因此返回值会变成false。

解决方法:

首先要保证从mysql数据库中取出的数据编码方式是正确的,
所以

1
2
3
$conn = new mysqli($servername, $username, $password,$DBname,$port);
下边紧跟着执行一句
mysqli_query($conn,"SET NAMES utf8");

就可以解决中文乱码的问题
此时解决了中文乱码之后,问题其实就已经解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值