php mysql 修改数据库字符集_php设置默认编码,设置读取数据库采用的编码字符集...

之前搭建了个网站,php.ini里面的default_charset = "gb2312"。然后今天将一个网站放了上面,发现打开里面的汉字都是乱码了,用TXT文本打开发现这些网站保存的编码格式都是UTF-8。那么多网页,我也不可能一个个去修改,在里面加条

或header("content-type:text/html; charset=utf-8");了吧。

于是在php.ini修改default_charset = "utf-8",嗯,这会打开这个网站就是正常不乱码了。

但是再打开之前一个网站,发现却都变成了乱码了。于是想到之前的网站的代码文件保存的编码发现,用TXT文本打开一看,果然有问题,保存的格式是ANSI。这个网站的文件相对少些,于是都一个个的把它们改为UTF-8的格式。

再打开一看,发现代码文件里面的汉字不再乱码,但从数据库取出来的数据的汉字却还是乱码。开始以为是数据库的保存编码格式有问题,就登陆MYSQL此网站的数据库去,用show variables like 'character_set_database';查看发现编码格式是gbk,再用alter database mydb character set utf8;把编码格式改为utf8。再打开,汉字仍然是乱码。折腾了好一会,才发现在这个站的源码文件里面,php有这样的一句:mysql_query("SET NAMES 'GBK'");,这句是向MYSQL发出执行一条SQL语句,设定数据库采用GBK编码。终于知道了,即使之前登陆MYSQL用alter database mydb character set utf8;把编码格式改为utf8也没用,因为在php源码里面的这句已经将编码改为GBK了。再是将此句改为mysql_query("SET NAMES 'UTF8'");,保存后再打开网站,一切正常。

3063959b773866a0b865367fc8e2f7a5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值