php和mysql中文乱码问题_网页php函数和Mysql中文乱码问题的解决方案

网页出现中文乱码的原因有很多,包括网页文件编码、mysql数据库编码、网页程序编码转换等诸多原因,这里归纳一下曾经碰到中文乱码的情况:

1. 网页文件编码错误

如php文件编码为gb2312,而数据库或网页编码meta编码为utf-8,编码错误导致php文件输出网页出现中文乱码。修改网页文件编码:如在editplus中修改文件编码:document->file encoding->changing file encoding 设置为utf-8。

2. 网页程序函数编码错误

如php的实体转换htmlentities 函数出现中文乱 码 ,为htmlentities加上 参数utf-8即可,如$body = htmlentities($body, ENT_QUOTES, “utf-8″);

3. mysql数据库编码问题

比如ubuntu系统下 lamp搭建mysql 数据库默认编码为latin1, 和windows 系统下配置mysql数据库不一样,经常会出现中文乱码的情况。修改mysql 数据库的配置文件,如远方博客使用gedit:sudo gedit /etc/mysql/my.cnf。在[mysqld]部分添加default-character-set=utf8;在[client]部分添加default-character-set=utf8。改变设置后重启mysql:service mysql restart 或/etc/rc.d/init.d/mysql restart重启,其中mysql系统服务service mysql restert仅在INSTALL-BINARY即bin目录下可以启动mysql,如shell> bin/mysqld_safe –user=mysql。

设置后可以检验一下mysql数据库是否已经设置成功了utf-8编码:sudo mysql -u root -p*****(输入密码) mysql> show variables like ‘character_set_%’; 和mysql> show variables like ‘collation_%’;

4. mysql数据库表和字段默认编码

ubuntu 中mysql 数据库字段在默认情况下也是设置为latin1_swedish_ci。应修改已创建的数据库编码,命令:sudo gedit ‘/var/lib/mysql/已创建的数据库名称/db.opt’.修改default-character-set=latin1 default-collation=latin1_swedish_ci为default-character-set=utf8 default-collation=utf8_general_ci。修改之后重起MYSQL。以后指定编码创建数据库:mysql>create database dbname character set utf-8;最后同时也要把mysql 的Collation设置为utf8_general_ci。

5. 网站服务器系统编码

linux/Unix系统下搭建的网站服务器文件FTP下载到windows 服务器上使用,有时候也会出现乱码,需要在ftp工具中进行文件传输编码设置,如FlashFXP设置:Site Manager->Advanced->character encoding->设置Auto或UTF-8,Filezilla设置也差不多。

6. 浏览器客户端编码/网页文件编码

在中文windows 系统下的浏览器一般默认为简体中文gb2312,若网页文件没有设置header 编码,utf8 数据则会出现乱码。所以要在网页文件中指定文件编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值