码迷,mamicode.com
首页 > 数据库 > 详细

php mysql 编码问题

时间:2018-04-26 21:07:37      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:图片   需要   info   使用   char   mys   new   读取   height   

php mysql 编码问题

问题:

PHP从数据库中读取数据,并echo出来,数据中文显示正常;但是echo出新定义的中文字符串,新定义的字符串会乱码。

由此可能是数据库中提取出来的中文编码和php的输出编码不一样。

 

操作:

在head中添加<meta charset="UTF-8">,定义页面编码。

问题:

PHP本身输出的中文编码正确了,但是从数据库中提取出来的中文编码错了。

 

由此可见,数据库提取出来的中文编码是可辨认的,在数据库中直接查询,也不会乱码。之后的乱码是因为数据库提取出来的中文编码与PHP本身输出的编码不同,选前者后者就乱码,选后者前者就乱码。

 

解决方法1:

$encode = mb_detect_encoding($sqldata, array("ASCII",‘UTF-8‘,"GB2312","GBK"));
if ($encode == ‘EUC-CN‘) {
$newsqldata = iconv(‘GBK‘, ‘UTF-8‘, $sqldata);
echo $newsqldata;
echo "</br>";
}

查询数据库中提取中文的编码,是EUC-CN,gb2312的一种表示方式。使用iconv将GBK转换为UTF-8,则数据库提取的中文编码也是utf-8,与PHP本身输出相同,就不会乱码了

 

解决方法2:

数据库中的数据存入时是用python存入的,规定了连接方式为utf-8;在python中,所有数据也一致处理为utf-8再存入。

本身以为这样子就OK了,但是出了这个问题后,查看MySQL编码时,发现其gkb

技术分享图片

 

所以单纯设定python连接编码、统一数据编码还不够,还需要修改数据库的编码。

所以要根源上处理该问题,就修改数据库的编码为utf-8。

 

php mysql 编码问题

标签:图片   需要   info   使用   char   mys   new   读取   height   

原文地址:https://www.cnblogs.com/huim/p/8954548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!