php页面乱码问题

php | 2017-10-15 12:43:49 | 106次阅读 | 0评

可能存在如下几个方面的问题:

一般的中文编码:gb2312或者gbk(前者的一种扩展),这两种编码缺乏国际通用性,属于中文编码;UTF-8为国际标准编码,一般网页编码使用该编码方式;比如,一般源码都提供 gbk utf-8的2种源码供用户下载试用。

     出现乱码大部分是由于编码方式的不一致导致的,其中主要有四个地方不一致就可能存在这个可能:1、页面文件的编码方式(.html,.php等);2、 html.head中指定浏览器的编码方式;3、MySql数据库传输的编码方式;数据库设置的编码方式的错误4、Apache字符集。

解决方法:修改他们的编码。使得mysql数据库存储输出、apache处理、html页面显示、PHP源代码等四个地方的编码方式一致——都为utf8/utf-8。

(1)html静态页面采用utf-8的设置(为了正确显示,改为注释了。)

添加<--!meta http-equiv="Content-Type" content="text/html; charset=gb2312">,-->

(2)PHP源代码文件采用utf-8字符集

这个在采用的集成编程环境下可以更改。以NetBeans为例,右键点击左侧项目名,在右键菜单中选择“属性”,在属性下找到编码,改为utf-8即可。

(3)提交给web服务器Apache的字符编码

即PHP程序运行时的编码。在PHP文件头上,加入下面的代码段(为了正确显示改为注释了):

<\?php
           header("Content-type: text/html; charset=utf-8");
           echo '中文';
      ?>

这段解决的是PHP传输给Apache的中文字符串参数正确显示问题。

(4)PHP传输给mysql的server服务器的参数

这个参数也要按照规则,设置正确的值。系统在调用mysql的接口函数前,如果要用到中文字符串参数(例如查询中文姓名等),则需要设置query的查询参数的字符编码集,方式为调用如下语句:

mysql_query("set names '编码'");

mysqli中用

$mysqli->set_charset('utf8');


其中的'编码'要和php的参数编码(即PHP源文件中的语句编码,即PHP源文件编码)一致,如果php源文件编码是gb2312那'编码'就是gb2312,如果是utf-8那'编码'就是utf8,这样就能保证传输给mysql server服务器的中文字符串参数如期正确传送,插入或检索数据时才不会出现乱码了。

(5)中文字符串在mysql数据库中的正确存储,在mysql中文乱码中已经介绍,可以参看相关设置。

博友评论,共0条
浏览144382次