php开发网站编码统一问题
一个良好的网站代码整洁,注释适当是最基本的,也是好的习惯,这可以避免以后的非常乱了自己感觉都乱,一旦重构麻烦就大了耗时耗力,其中网站整个体系的编码是最重要的一个方面,为了网站的稳定性建议php程序,HTML页面,css和js文件,数据库编码全部为utf-8编码,这样保证网站在任何位置被访问都能够正确显示,当然也可以用gb2312或者gbk的编码占用空间小一些,但注意也要编码统一,不一样的要转换。
1、首先HTML文件,文件本身编码是由编辑器所决定的,不管你用实体还是十六进制编码都和页面编码是独立的没有关系,这里编辑器都要设置成纯utf-8和gb2312的,不要带BOM头否则有时候会出现问题,vim、sublime Text、gedit编辑器都是默认纯正的utf-8编码,页面编码确定为utf-8编码之后,我们还要用<meta>标签来设置页面编码,传送至http头,以便浏览器正确解析,代码如下:
<meta charset="utf-8">
这种写法是HTML5标准写法,目前浏览器都支持,不用再像HTML4中写那么长了
2、然后就是php文件,还是文件本身编码要确定,如果php标记是嵌入在HTML中的,那么和1中一样建议在<meta>标签中声明,如果是php类文件,则不用声明编码,保持文件自身编码即可,不嵌入HTML的php脚本每个文件必须声明编码,都在php文件的第一行,用header()函数向http头设置编码,代码如下:
header("Content-Type:text/html; charset=utf-8");
这样就行了
3、CSS和独立的JavaScript编码,这个不用声明,文件本身用utf-8编码写就行,他们默认是utf-8编码特别是JavaScript传递参数时传递的是utf-8编码,如果页面或者数据库是gbk编码,那么要进行转码。
4、数据库编码,建立数据库的时候一般要设置字符集,我们都保持统一设置成utf8系列的就行,一般选择utf8_general_ci这个字符集,然后用php连接数据库并选择数据库之后,一定要设置数据库编码,设置代码如下:
mysql_query('set names utf8');
5、如果是和其他网站交互或者抓取网页与自己网站编码不一致,那么需要进行转换编码以及URL编码解码的操作,字符编码我们可以用iconv()函数或者mb_convert_encoding()函数进行编码转换,如果发送到URL要用urlencode()和urldencode()函数进行编码和解码,重点是弄清楚我们自己网站文件编码、声明头编码、请求参数等等所有编码都是统一的,和其他网站交互只要转换成和他们网站一样的编码就行啦,然后灵活运用这些函数就没问题了,其他的交给浏览器来完成,我们直接向浏览器发送字符或者URL编码都OK,关键是编码一致
经过以上几步编码就统一了,对于整个网站的乱码问题基本上就可以解决了,这个刚开始不容易理解,多练习多思考自然就可以掌握好了