每日聚焦:php json数据中文乱码问题怎么办

时间:2023-02-03 11:19:02       来源:PHP中文网

本教程操作环境:Windows10系统、PHP8.1版、DELL G3电脑


(相关资料图)

php json数据中文乱码问题怎么办?

解决php转json后的中文乱码

问题:

在php中读取数据库的数据,可以用var_dump / print_r 正确读出中文数据,但是转了json格式后,中文数据就变成乱码了类似于 "\u5c0f\u660e";

解决方法:

在json_encode()方法中添加多一个参数JSON_UNESCAPED_UNICODE;

例如:json_encode($this->cjarr,JSON_UNESCAPED_UNICODE);

为什么要加JSON_UNESCAPED_UNICODE,查询后我的理解:

php中的json_encode在处理中文数据时会进行编码,得到类似于 "\u5c0f\u660e" 的字符串,使得读取数据不便,添加JSON_UNESCAPED_UNICODE后就不用编译中文码 Unicode,正常输出中文

问题代码:

//读取所有数据        public function SelectAll(){             $sql = "SELECT * FROM `websql`";             mysqli_query($this->link,"set names utf8");             $results = mysqli_query($this->link, $sql);            while($row = mysqli_fetch_assoc($results)){               array_push($this->cjarr,$row);            }                   }                public function a(){            print_r($this->cjarr);//未转json格式前            echo "

"; echo json_encode($this->cjarr);//转json格式后 }
登录后复制

问题输出:

解决问题代码:

//读取所有数据        public function SelectAll(){             $sql = "SELECT * FROM `websql`";             mysqli_query($this->link,"set names utf8");             $results = mysqli_query($this->link, $sql);            while($row = mysqli_fetch_assoc($results)){               array_push($this->cjarr,$row);            }           //添加JSON_UNESCAPED_UNICODE 后解决该问题           $this->jsonCjarr = json_encode($this->cjarr,JSON_UNESCAPED_UNICODE);        }                public function a(){            print_r($this->cjarr);//未转json格式前            echo "

"; echo $this->jsonCjarr; //输出 }
登录后复制

解决问题后输出:

推荐学习:《PHP视频教程》

以上就是php json数据中文乱码问题怎么办的详细内容,更多请关注php中文网其它相关文章!

关键词: 解决问题 相关文章 视频教程