PHP读取MySQL显示中文乱码

在写PHP 的WEB应用时,我们最长碰见的问题可能就是中文乱码问题了,前一段时间我在搭建自己博客的过程中,很不幸的也遇到了这个问题.


问题情景描述

当时我遇到的问题是这样的:

本地测试:
页面现实正常,MySQL数据中存储的中文是乱码.
服务器端测试:
页面显示出现乱码,数据库中存储的中文也是乱码.
注意:服务器端的数据是通过SQL文件导入的,当我尝试在服务器端执行写博客操作输入文章数据并提交后,页面显示的新添加的文章依然显示乱码


乱码原因分析:

web应用之所以会出现乱码问题,根本原因是各部分文件编码不一致造成的,像PHP对中文的编码方式,HTML对中文的编码方式,MySQL表的编码方式.这三种文件的不一致才是乱码问题的罪魁祸首.


乱码解决方法:

既然我们知道了这个问题,那么我们就让PHP,HTML,MySQL的编码方式保持一致.
我是按一下步骤来的:

  1. 在创建数据库和表的时候我已经选择了UTF-8的编码方式,但是数据表中的排列规则默认是latin1_swedish_ci,我把它调整为:utf8_general_ci.这样保证了MySQL数据库编码方式是utf-8.
  2. 在所有HTML代码里面设置编码方式为utf-8.实现 代码为:<meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    这样保证了HTML文件的编码方式为utf-8.
  3. 对于PHP文件,首先在每一个PHP文件的第一行添加header("content-Type: text/html; charset=utf-8");代码,以保证数据在通过HTTP传输时的编码为utf-8。然后是最关键的步骤: 在每一个执行数据库查询的PHP代码处设定MySQL数据与PHP的交互方式为utf-8实现代码为://设置读取数据库的数据编码格式
    mysql_query("set character set 'utf8'");//读库
    mysql_query("set names 'utf8'");//写库
    后面测试中,这两行代码保证了输入数据库中的数据是正常的。

这三步完成后,在本地测试中的乱码问题就解决了。

然后我们将代码push到服务器端,然后删除服务器端原本的表,重新导出本地数据库,导入到服务器端数据库,这样就成功了。
下面是我的正常显示的博客地址:
博客地址:茂升快跑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值