centos php编码设置,centos: php中文乱码

服务器之前别人写的php代码: 现在php中文乱码:解决方案 show create table t_user_friend; 发现其是latin1编码的,需将其转成utf8 命令如下 alter table t_user_friend convert to character set utf8; 这边也可以通过navcat设计表重新把表的编码更改为 utf8-unicode-cli 当然还可以设置mysql的客户端和服务器的默认编码 vi /etc/mysql/my.conf

在[mysql] 下面 添加 default-character-set=utf8

在[mysqld] 下面添加 character-set-server=utf8 collaction-server = utf8-unicode-cli或者下面的 //collaction-server = utf8-greneral-cli

做完上面,mysql这边已经全部utf8了,因为php代码meta 里面的charset=gb2312搜索统一改为utf-8, 或者在公用模块里面 header() 函数向客户端发送原始的 HTTP 报头。

认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题):

header("Content-type: text/html; charset=utf-8"); 这一句前不能向页面输出任何内容,意思是不能使用echo等语句,也不能输出html标签或文字 如果在header前输出了等标签或文字那肯定会报错 实际上你用了header("Content-type: text/html; charset=utf-8"); 这一句的话就不需要用了,同一个道理 最后再将php文件编码转为UTF8-BOM,notpad++修改

上面解决,可是这个mysql查询出的语句显示还是?号乱码,最后在query方法里面,db连接之后,mysql_query("set names utf8")

总而言之: mysql表编码统一 my.cnf编码统一 php文件编码统一 php里面的meta或者header设置编码统一 php连接之后,query请求之前mysql_query("set names utf8")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值