使用PHP向MYSQL数据库插入中文时,页面中文显示正常,但是用navicat查看数据里面就是乱码。。。

数据库编码,php都用的是utf-8.。。。这种情况是怎么回事???

这种情我遇到过,以前也是这样的;后台数据库的编码为GB2312,但前台显示和后台显都采用了UTF8,所以你在后台看到数据是乱码,但通过你的程序显示是正常的。
解决方案,
1.把你的表内容,写只程序导出为TXT文字,
2.住还是UTF导出后保存在文本格式,
3.注意分隔符等,
4.接下来新建一个数据库为UTF8的编码,
5.用Navicat Premium软件导进数据进数据库,保持表名,字段结构等都不变。
6.接正就直接连接新的数据库显示就为正常的UTF8数据了,直接用软件打开也不会出现乱码,

虽然方法有点复杂,但这是解闪的根本方法!其实第二种:利用PHP的转码直接转码,这种方法危险性较高也不全面,请谨慎考虑!
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-11
我觉得还要明确一下,你说的“页面中文显示正常”,是指用php读取数据库再显示出来是正常的吗?还是说与用navicat查看一样都是乱码?追问

用php读取数据的页面时正常的(就是在php页面什么问题都没有),只要用navicat和phpmyadmin查看数据库里面的中文就是乱码。。。

追答

据我的理解,用php读取mysql数据时,可以通过代码来转换数据的编码格式。

我觉得你可以查看下数据库的结构定义,确定数据库、字段都是utf-8(即字符集:utf8,排序规则:utf8_general_ci,字段类型:varchar。。)。

不太清楚你乱码的数据是怎么输入进数据库,所以这个环节你可以测试一下,比如直接用phpmyadmin 编辑或新增一个记录的数据,看能不能正确显示,如果能就是在 数据输入 环节有问题。

追问

谢谢你的回答,,我去试试,只不过为什么读取数据显示的是正常呢??是不是navicat有问题???

追答

不一定,需要根据你的输入数据来定,比如你输入的数据就是乱码(就是说与输入的数据与navicat看到的定义类型不一致,比如,虽然都是utf-8,但可能输入的是utf-8B)

本回答被网友采纳
第2个回答  2012-11-10
能确认navicat支持utf-8编码吗?追问

首先谢谢你的回答。。。我用navicat创建数据库时候编码就是utf-8啊。。。并且用phpmyadmin查看也是同样乱码??你说的支持是怎么回事??

追答

phpmyadmin,应该是不支持数据库中的uft-8编码。

我一直没找到支持显示数据库中uft-8编码的管理程序。我看到的内容全是乱码,一直这样用着。如果谁帮你解决了这个问题,也告诉我一声,谢谢了。