11

01-2013

页面编码是所有程序人员都离不开的话题,虽然这是一个很简单的小问题,但是很多人遇到这样的问题却不知道到底是怎么一回事,因为没有经验会不知道到底应该如何下手。这些都是一些经验和写作习惯的问题,如果你经过比较规范的培训或学习,一般情况下是没有问题的,怕就是你不自己写作开发不规范。所以要有一个好习惯才可以!

拿咱们php为例,几乎所有的开源程序的发行版本,都会有什么ut-8版本,gb2312版本,等等。即使一些没有的,他会有一些内部的函数,或专门的文件,会对你预设的编码格式进行设置。Php的程序,可以认为是一条线,用户通过一个url,访问了你一个文件,每一次的一个点击,都是一条线,但是这条线中间会经过很多的环节。我们就从开始到结束,来说。

所有的乱码都是编码不统一造成的!而所有的乱码都是针对中文字符来说的,英文字符不会出现乱码!

首先,一个url请求先到达的是你的服务器,其实我们很多程序可能不知道,在每个网址进行服务器绑定的时候都是有个预设编码的,虽然这个预设可能并没有效果会被后面的代码等等所替换,但是这毕竟是一个环节,我们一般要配置虚拟目录,配置的时候是通过类似

 

这样的代码配置的,这个AddDefaultCharset UTF-8就是设置了一个预设编码,如果你的目录下的文件没有设置编码,就会默认以这个编码让浏览器解析,如果这个地方都没有配置的话,那你的浏览器预设的是什么编码,就会用什么编码来解析。

第二部就是访问文件了,很多人可能不知道,其实文件本身是有编码格式的,比如你新建了一个php文件,或html文件,你用专门的编辑器,我习惯用EditPlus,他的右下角会显示文件本身的格式编码,如果你文件本身是ANST,而html中用<meta charset=”utf-8″>设置,那么编码就不统一了,就会是乱码,所以有的同学说,我设置的就是utf-8,浏览器编码也是,可就是显示乱码,而且无论浏览器调成哪种编码,都显示乱码,就是这个原因了,大部分的乱码都是因为这个问题造成的。

而如果你访问的是php文件,可能,文件中会进行连接数据库的操作,php一般用的数据库是mysql数据库,而mysql数据库在存储内容的时候也是有编码格式的,我们必须保证如果数据库是utf-8,那你的文件就要是utf-8,而且,php连接数据的操作函数设置也必须是utf-8(mysql_query(“SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary”,$con);或php5.2 mysql_set_charset(‘utf-8’, 你的连接);)这样才能保证直接读取出来后是正常的,不然你要通过php的函数进行转编码。

上面的注意了,一般就不会出现一些简单的错误了,而还有一些,就是数据转移的时候,如果你的php是gbk,读的原数据库也是gbk,那你的数据就是gbk的,但是如果你用这个文件往utf—8的数据库中插入,那么中文的地方一定差不进去,要么改数据库,要么就先将字符通过iconv类的函数来转化一下先。

还有一个地方就是页面中加载的js,js的内容如果有写出中文的部分就要注意了,如果你的js功能是操作的图片,那编码是什么就无所谓了,而如果有中文输出到页面,那你的js要和html一样,注意首先本身文件格式和其引用页的编码设置要一致,不一致就要另存一下你的js.还有一种情况比较特殊,就是有的时候我在用.net的网站时发现,即使另存了也会乱码,那就要再规范一点,就是js在引用的时候要加上charset属性来指定正确的编码。如

 

总结:要养成良好的代码书写和文本版本控制习惯,如果你注意了,基本不会出现这样的问题。而出现了,要高清楚原理,所有的乱码都是编码不统一造成的!而所有的乱码都是针对中文字符来说的,英文字符不会出现乱码!

本文链接:http://www.521php.com/archives/1027/

程序本天成,妙手偶得之!我们只是代码的搬运工!

转载请注明:http://www.521php.com/archives/1027/