PHP插入MYSQL数据库中文变成乱码 问号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP插入MYSQL数据库中文变成乱码 问号相关的知识,希望对你有一定的参考价值。
字段name的编码为utf8_unicode_ci
表的编码也为utf8_unicode_ci
数据库的编码也是
php编码也是utf-8,但是插入之后在数据库里仍然是乱码
代码中有加入:
mysqli_query($db,"set names ’utf8’ ");
mysqli_query($db,"set character_set_client=utf8");
mysqli_query($db,"set character_set_results=utf8");
加入之后变成问号……
只有插入会这样,如果读取的话加上前面三句就可以正常显示中文
MYSQL已经是utf8了,PHP也是,但是插入的时候还是问号
读取出来显示到PHP上就正常
读取的数据不需要做处理就显示正常吗?你MYSQL是用什么打开的?PHPMYADMIN?还是其他的数据库管理软件,如果是PHPMYADMIN的话,你把当前游览器的编码设置一下
追问读取的数据要加下面三行才能显示正常:
mysqli_query($db,"set names ’utf8’ ");
mysqli_query($db,"set character_set_client=utf8");
mysqli_query($db,"set character_set_results=utf8");
否则是问号
当前浏览器是utf-8
你插入数据的时候,前面加入这个mysqli_query($db,"set names ’utf8’ "); 后2个不需要。你看下问题是否解决了
追问不行
追答你那个PHP文件的当前页面编码是不是UTF8。。如果PHP文件的编码不是UTF8,也可能会出现这种情况,用编辑器看看PHP文件编码吧,看是不是UTF8无BOM
追问本来是utf-8,现在改成utf8无bom也不行
追答无能为力,不清楚啥情况了,还有最后一个办法就是,你胡乱改一改编码格式,比如都改成GBK的,也许就正常了,正常以后再改回utf8,如果还不行,不知道问题再那里,考虑重新安装数据库吧
追问嗯好吧
参考技术A 字段和表结构改成 utf8_general_ci 编码追问改了,没用
utf8_unicode_ci 和utf8_general_ci 差别不是很大把
那就改成GBK试试
mysql中文乱码--存入mysql里的中文变成问号的解决办法
今天,服务器里测试的时候,发现存入数据库的中文全部变成问号了!
首先想到这是编码问题:于是乎再次设置数据库的编码为utf8
可是,问题仍然存在:
后来发现,这个问题的根源应该是:
虽然数据库编码是utf8,但是数据库里的表和字段不是utf8
所以要解决这个问题,必须要将数据库的表和字段的编码都设置为utf8:
一下是设置办法:
修改数据库表编码为utf8:ALTER TABLE `table` DEFAULT CHARACTER SET utf8;
修改数据库字段编码为utf8,当然你可以一个一个字段修改,不过我告诉你一次性修改的命令:alter table `tablename` convert to character set utf8;
以上是关于PHP插入MYSQL数据库中文变成乱码 问号的主要内容,如果未能解决你的问题,请参考以下文章
mysql中文乱码--存入mysql里的中文变成问号的解决办法