解决PHP数据库乱码问题
2016-10-21 16:40
1671 查看
最近在使用Apache+php+MySql练习网站编写,在存储数据的过程中,HTML表单中输入的中文通过php存入数据库里面显示是乱码,百度了一下,各种说法都有,真的操碎了心,不过还是看到几条有用的信息,就是不管是中文的还是英文以及其他字符,编码格式都设置成utf8这种格式。
1、在html代码中加上这句:
<metahttp-equiv=”Content-Type” content=”text/html; charset=utf-8″>,这个来定义网页的编码,在连接数据库,选择具体数据库后,用mysql_qurry(“set names utf8”);来设置数据库的编码和html编码一致。用的是zend studio开发环境,开发环境也有其代码显示的编码,所以也要改成utf8格式。另外一个就是在创建数据库表的时候也是很关键的,例如在phpMyAdmin数据库中,创建一张tb_product表时候:也要设置里面字段的编码方式,多说无用,看图1吧:
在中下位置将Collation设置为utf8-general-ci编码
图1
图2
2、要是创建表的时候忘记设置这个属性了,也不用担心,还有方法,首先选择要修改属性的表,点击Operations修改其属性,同时可以勾上changeall column这个,确定即可,如图2所示.为了进一步保证不出现乱码,还可以对 该表中的某些字段或者所以字段分别添加utf8-general-ci。具体操作:点击需要修改的表(tb_product)->Structure->check
all->change,然后再单独设置每个字段的Collation。如图3所示.
图3
注意:要是没对整个表选择编码为utf8-general-ci,而只是对表中的某些字段设置成utf8-general-ci格式,通过Operation查看表的属性,还是会看到整个表的编码为:如gbk-chinese-ci这种格式的话,如果Html编码是utf8,那还是会出现乱码的,所以最关键的是对整个表的Collation设置为utf8-general-ci。如图4和图5,图4中虽然pro_name和pro_producer看起来是utf8-general-ci编码,可是通过查看整个表的编码还是如gbk格式,编码不一致,所以很可能在表中还是会出现乱码。
好了,总结一下,长话短说,四点:
1、 如在zend studio中编写php,html代码,首先将创建的工程的显示编码格式为utf8格式;
2、 在html中使用<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>要编写的网页显示的编码格式;
3、 连接数据库的时候在选择某个数据库后(不是表)使用mysql_qurry(“set names utf8”);
4、 就是上面提到的创建数据库的时候将整个表的编码格式设置为utf8-general-ci。
图4
图5
1、在html代码中加上这句:
<metahttp-equiv=”Content-Type” content=”text/html; charset=utf-8″>,这个来定义网页的编码,在连接数据库,选择具体数据库后,用mysql_qurry(“set names utf8”);来设置数据库的编码和html编码一致。用的是zend studio开发环境,开发环境也有其代码显示的编码,所以也要改成utf8格式。另外一个就是在创建数据库表的时候也是很关键的,例如在phpMyAdmin数据库中,创建一张tb_product表时候:也要设置里面字段的编码方式,多说无用,看图1吧:
在中下位置将Collation设置为utf8-general-ci编码
图1
图2
2、要是创建表的时候忘记设置这个属性了,也不用担心,还有方法,首先选择要修改属性的表,点击Operations修改其属性,同时可以勾上changeall column这个,确定即可,如图2所示.为了进一步保证不出现乱码,还可以对 该表中的某些字段或者所以字段分别添加utf8-general-ci。具体操作:点击需要修改的表(tb_product)->Structure->check
all->change,然后再单独设置每个字段的Collation。如图3所示.
图3
注意:要是没对整个表选择编码为utf8-general-ci,而只是对表中的某些字段设置成utf8-general-ci格式,通过Operation查看表的属性,还是会看到整个表的编码为:如gbk-chinese-ci这种格式的话,如果Html编码是utf8,那还是会出现乱码的,所以最关键的是对整个表的Collation设置为utf8-general-ci。如图4和图5,图4中虽然pro_name和pro_producer看起来是utf8-general-ci编码,可是通过查看整个表的编码还是如gbk格式,编码不一致,所以很可能在表中还是会出现乱码。
好了,总结一下,长话短说,四点:
1、 如在zend studio中编写php,html代码,首先将创建的工程的显示编码格式为utf8格式;
2、 在html中使用<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>要编写的网页显示的编码格式;
3、 连接数据库的时候在选择某个数据库后(不是表)使用mysql_qurry(“set names utf8”);
4、 就是上面提到的创建数据库的时候将整个表的编码格式设置为utf8-general-ci。
图4
图5
相关文章推荐
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- 怎么解决php调用数据的值或者插入数据库的时候乱码的问题
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- PHP使用PDO操作数据库的乱码问题解决方法
- php操作数据库解决中文乱码和读取数据库中文null问题
- php pdo连接数据库 解决中文乱码问题
- PHP使用PDO操作数据库的乱码问题解决方法
- PHP连接SQL SERVER 数据库 PHP连接MYSQL数据库并解决中文乱码问题。
- PHP 显示页面以及数据库中出现乱码问题的解决方式
- PHP从数据库导出数据到excel,无插件(解决中文以及法语乱码问题)
- LINUX下php连接mssql数据库中文字符乱码问题解决
- PHP学习技巧总结乱码显示问题,register_global为On的时候,图片上传数据库
- 解决数据库导入时出现的乱码问题
- PHP 发送UTF-8编码中文邮件标题乱码问题解决
- php中文乱码问题及解决方法
- 解决PHP存取MySQL 4.1乱码问题
- 在php中 urlencode函数解决乱码问题
- 解决PHP存取MySQL 4.1乱码问题
- JSP中乱码问题解决(一、JSP页面显示乱码,二、表单提交中文时出现乱码,三、数据库连接出现乱码,四、数据库的显示乱码 )
- php读mysql中文乱码问题解决方法