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里面设置,不要在PHP里设置MYSQL的编码,乱码肯定就是编码问题无疑,推荐你先把MYSQL里面表的编码改好,然后再把PHP的编码改好,这样就应该没问题了。追问

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,如果还不行,不知道问题再那里,考虑重新安装数据库吧

追问

嗯好吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-05
字段和表结构改成 utf8_general_ci 编码追问

改了,没用
utf8_unicode_ci 和utf8_general_ci 差别不是很大把

追答

那就改成GBK试试

相似回答