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试试

PHP + MySql (phpmyadmin) 中文显示是问号
1、如果你是Window系统的话,你可以进入cms命令行对数据库进行修改编码操作命令 set names gb2312,(具体的进入命令行自己到网上查。)linux就简单了,这个就不教了,谁叫linux就是命令的天下呢。2,对读出的数据惊醒编码转换,具体的在php代码中进行,...

PHP插入MYSQL数据库中文变成乱码 问号
去MYSQL里面设置,不要在PHP里设置MYSQL的编码,乱码肯定就是编码问题无疑,推荐你先把MYSQL里面表的编码改好,然后再把PHP的编码改好,这样就应该没问题了。

php+mysql数据库中文连接乱码?set names utf8 也不行!
1:将数据编码格式保存为utf-8 设置默认编码为utf8:set names utf8;设置数据库db_name默认为utf8:ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;设置表tb_name默认编码为utf8:ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;导入:...

php读取mysql数据库的内容后显示为乱码,中文变成问号怎么办?
换成UTF8肯定不行,因为是问号,肯定不是三字节到两字节 的问题,而是和拉丁1有关,因为问号是不可能转换的意思 ,失败了,解决:你需要 按数据流入的程序再配置好,再原路返回,,再换重新建库,导入 ,,OK 顺便说一下,出的分太少了

PHP读MYSQL中文乱码的快速解决方法
NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:mysql_mylink = mysql_connect($mysql_host,mysql_user,mysql_pass);mysql_query("SET NAMES 'GBK'");以上就是小编为大家带来的PHP读MYSQL中文乱码的快速解决方法的全部内容了,希望对大家有所帮助,多多...

python3连接MSSQL数据库 中文乱码怎么解决
以前用php连mssqy时也经常出现中文乱码(中文变问号)的问题,那时就明白是编码没设置好导航,现在的Python连mssql数据库也同样出现这问题,问题一样,解决的办法当然也会相似,现在我们来看看解决方法。python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的...

PHP与Mysql连接后,中文汉字乱码怎么解决
1一般出现在网页,用网页上面的查看——编码——简体中文即可解决。2 出现乱码一般是Windows系统字库的问题,可能是系统错误或不正常关机造成的,也可能是某些软件需要使用操作系统以外的字库造成的。解决办法得看具体的问题,一般情况下的Windows乱码可以通过以下三种方法解决。第一种方法是下载 解决Windows...

PHP显示MySQL数据乱码,字符集设置都是UTF8,数据库也是UTF8,一直找不...
1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.4.用户提交页面的...

mysql数据库正常,php查出来中文变乱码了
典型的编码问题。在php中mysql_connect之后,加一句:mysql_query('set names utf8', $con);用来设置一下编码。php文件的编码(一般是UTF8无BOM)也应该与数据库的编码一致。显示是通过html完成的,因此应该在中的前,指定html的编码为utf8.总之,养成良好的编码习惯,数据库建立的时候就用utf8,数据表...

...而cmd运行mysql的时候中文变成了乱码,求解决方法?
中文乱码问题经常会出现 1、数据库、数据表、字段 编码格式要保持一致 2、如果在doc界面录入数据,要保持当前编码格式与数据表编码格式一致 3、php读取数据显示,要保持文件的编码格式、html页面的编码格式同数据库一致,编码格式为utf-8或gb2312或gbk 4、php连接数据库之后mysql_query('set names gbk')...

相似回答