很诡异的mysql乱码,大神
程序员文章站
2022-05-08 09:35:12
...
很诡异的事情,我的数据库查询statue都是utf8,
我在执行插入的php中加入header声明uft8,取出的也是utf8,那么都是正常汉字,但是mysql中存的是乱码。
如果我再插入的php声明一句 set names utf8,存储同样的汉字,mysql成了另外不同的乱码,取出页面的php也成了乱码
如果我在mysql中直接输入set names gbk,其他的都不改(都声明的utf8),那么数据库的就正常的,取出的还是乱码,,,,如果是通过插入php声明set names gbk,提示插入汉字错误
确实是,我试了一下,cmd窗口乱码,后来我安装了phpMyAdmin,更改链接字符集为utf8_ unicode_ci,,显示的就正常,然后在取出的时候也声明一下utf8,就都不乱码呃
我在执行插入的php中加入header声明uft8,取出的也是utf8,那么都是正常汉字,但是mysql中存的是乱码。
如果我再插入的php声明一句 set names utf8,存储同样的汉字,mysql成了另外不同的乱码,取出页面的php也成了乱码
如果我在mysql中直接输入set names gbk,其他的都不改(都声明的utf8),那么数据库的就正常的,取出的还是乱码,,,,如果是通过插入php声明set names gbk,提示插入汉字错误
回复讨论(解决方案)
你php文件本身是什么编码?是不是gbk
基本上 数据库设计的编码有问题.重新设置一下吧 数据库 表 字段 编码
数据库低版本的数据编码方式好像只有gbk,我装的最新版本的就不用更改编码方式为gbk
应该是PHP本身是GBK,而数据库却是UTF8的编码所造成的。
用命令行的话,CMD窗口的mysql客户端采用的是GBK编码,所以才需要声明set names gbk
如果是PHP做客户端来调用MySQL,就需要set names utf-8
也就是说,客户端是什么编码,你就要声明需要什么编码,但是设计表的时候,一般用utf-8的编码。
无论是做什么操作 set names 字符集 都是需要的
或许你可以调整你的数据库配置,来省去交互时的字符集声明,但你的程序就存在着乱码隐患
用命令行的话,CMD窗口的mysql客户端采用的是GBK编码,所以才需要声明set names gbk
如果是PHP做客户端来调用MySQL,就需要set names utf-8
也就是说,客户端是什么编码,你就要声明需要什么编码,但是设计表的时候,一般用utf-8的编码。
确实是,我试了一下,cmd窗口乱码,后来我安装了phpMyAdmin,更改链接字符集为utf8_ unicode_ci,,显示的就正常,然后在取出的时候也声明一下utf8,就都不乱码呃
下一篇: php 缓存处理
推荐阅读
-
关于一个很复杂的MYSQL查询排列场景的问题
-
解决mysql控制台查询数据乱码的有关问题,有图有真相
-
PHP与MySQL开发中页面乱码的产生与解决_PHP教程
-
Mysql刷库脚本中带中文,读取出现乱码的问题_MySQL
-
MySQL与PHP产生乱码的具体原因和解决办法介绍
-
mysql数据库中文乱码应该怎么解决,修改配置文件中的字符编码并没有作用
-
解决mysql导入还原时乱码的问题_MySQL
-
mysql-求正确MYSQL的写法,请大神赤脚
-
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
-
mysql-数据库中的关系表有什么作用 求大神解惑