当前位置:首页 > PHP > 正文内容

php json_encode 使用注意

高老师7年前 (2019-04-12)PHP1796

参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)

代码:

<?php
$dbms = 'mysql';
$host = '192.168.8.8';
$dbName = 'test';
$user = 'root';
$pass = 'root';
$dsn = "$dbms:host=$host;dbname=$dbName";
try
{
    //初始化PDO
    $dbh = new PDO($dsn, $user, $pass);
}
catch (PDOException $e)
{
    //获取异常字符串
    $message = $e->getMessage();

    //输出下异常字符串.正常输出(SQLSTATE[HY000] [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)
    echo $message;

    //检查字符串的编码.输出EUC-CN.即GB2312
    echo mb_detect_encoding($message, ["ASCII", "GB2312", "GBK", "UTF-8"]) . PHP_EOL;

    //打印下Json类型竟然是false
    $data = json_encode([
        'message' => $message
    ]);
    var_dump($data);
}

上面的代码中由于数据库配置错误,一定会抛异常,异常信息是SQLSTATE[HY000] [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

本身是想把错误通过json发送给前端,但是前端总是收不到任何内容,原来是因为pdo内部抛出的异常中携带gb2312编码的中文原因,输出前转换下编码即可

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/86.html

分享给朋友:

“php json_encode 使用注意” 的相关文章

 php抽象类有什么用, php抽象类的作用

php抽象类有什么用, php抽象类的作用

    理解抽象类最快的方法就是使用场景,最近在看布尔PHP视频中看到这样的讲解非常容易懂,分享出来。    假设如下场景:    团队准备开发某网站,表建好了,页面设计好了.  ...

PHP生成缩略图

PHP生成缩略图

//参数1  文件名    参数2  缩放比例  function   _thumb($_filename,$_percent){    ob_clean();...

php将html转为pdf,php将html页面导出pdf

php将html转为pdf,php将html页面导出pdf

首先下载wkhtmltox-0.12.4_linux-generic-amd64.tar.xz   (不要下载RPM包,依赖太多,需要x-server支持),并解压,执行测试运行正常tar wkhtmltox-0.12.4_linux-generic-amd64.tar.xzcd...

PHP高并发下数据库值更新的问题

PHP高并发下数据库值更新的问题

(1).创建数据库test ,创建表shop(字段id,total),商品id是1,商品总数10    (2).PHP模拟购买,商品数量大于0才能购买<?php //连接数据库 $con=mysqli_connect("192.168.2.18...

php数组合并 array_merge和+号的区别

php数组合并 array_merge和+号的区别

array_merge是最常用的数组合并方法,+号同样也可以,但是却有很大不同。array_merge遇到相同字符串key,后面数组的key会覆盖前面数组的key,+号正好相反。$a = [ 'one' => 'A on...

PHP获取站点根目录,PHP获取应用根目录,cgi和cli都支持

PHP获取站点根目录,PHP获取应用根目录,cgi和cli都支持

重构框架的时候想要考虑支持下cli模式,于是参考了thinkphp的底层。/**  * 获取应用根目录  * @return string  */ public static function getRootP...