Home >Backend Development >PHP Tutorial > PHP查询mysql,中文数据,通过不同方式添加的相同数据竟然显示不同解决方案

PHP查询mysql,中文数据,通过不同方式添加的相同数据竟然显示不同解决方案

WBOY
WBOYOriginal
2016-06-13 13:30:00874browse

PHP查询mysql,中文数据,通过不同方式添加的相同数据竟然显示不同
hi,
我先说下我的情况。php的新手。
----现象
输出的页面中,我已经添加了,我也在查询mysql的时候,添加了
mysql_query("set character set utf8");
 mysql_query("SET NAMES 'UTF8'");
有的中文可以显示,有的不能。

----乱码显示的过程和代码
我的phpmyadmin中数据库和text字段,都是用 utf8_unicode_ci进行设置。

我手动通过phpmyadmin在数据库添加的中文,然后直接执行
 mysql_query("set character set utf8");
 mysql_query("SET NAMES 'UTF8'");
$rs = $db->query("SELECT * FROM book");
显示出乱码。

----正常显示的代码和意外的结果
 mysql_query("set character set utf8");
 mysql_query("SET NAMES 'UTF8'");
$rs2 =$db->exec("INSERT INTO `lalabook`.`book` (`bookname`, `bookdes`) VALUES ('小兵', '兵小')");
$rs = $db->query("SELECT * FROM book");
可以正常的显示出我插入的数据。但是有个问题是,我在通过phpmyadmin查看我插入的数据时,显示的时乱码。
----
所以我不清楚这个时什么原因造成的,是不是我以后插入数据都要通过代码。不能再用phpmyadmin插入了


------解决方案--------------------
在phpmyadmin 内直接执行 SET NAMES 'UTF8' 然后再SELECT ....出来的结果呢?
phpmyadmin也是需要设置链接编码的.
------解决方案--------------------
是不是文件本身的编码有问题
------解决方案--------------------
是虚拟主机吧, 一切都是正常的.

用户提交Utf8,php操作入库,出库就可以了。

phpadmin乱码是因为mysql_server编码一般服务商都是latin的,但服务商一般都保证connenct/client/result是utf8的,也就是数据出入的编码是utf8,存储的时候是latin,所以去phpadmin看php操作的会乱码。

另外,在phpadmin里执行sql插入的数据,在php读取的时候会乱码,这个问题是很神奇的,我也没看phpmyadmin页面是什么编码。

一句话:设置库,表,列的编码全部是utf8-unicode-ci,之后数据的出入库都采用utf8编码,不要在意phpadmin查数据时候乱码,不会影响用户即可。
------解决方案--------------------
编码常用的是utf8-general-ci
不只是表要通一,要统一的总共有四处
一是:数据库类型,其中包括,数据库,表,字段三处都要统一,可以检查一下
二是:文件的编码类型,你若用dw或editplus可以查看页面编码,不同需修改
三是:访问数据库时的设置既set NAMES utf8;
四是:浏览器显示方式,既
这四处必需统一,否则可能会出现问题

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn