这问题开始开来于页面编辑工具上,后来又深入到服务器的配置中。
Macromedia Dreamweaver与Aptana RedRails 是我编写PHPWEB服务器的两个工具。用的还不错,开始这两个并用时并没有发生什么乱码之事,后来试用Aptana这工具时就发生一些意外了。在Aptana编写到Dreamweaver中看是乱,反之同效果。查看Aptana编码设置为UTF-8而Dreamweaver是gb2312。晕问题在这里,统一UTF-8。
还以为OK了,在测试时又发生了乱码,原有过一点JSP编码的经验所以也就想到了源头PHP的设置。浏览器是根据http应答消息头部中的 Content-type: text/html; charset=xxx 来决定使用何种编码(xxx)解释应答。如果浏览器是以UTF-8应答时想来apache服务器是用UTF-8来传递数据。同理。
页面编写设置为<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />的PHP文件,浏览器访问它时解释应答确是以gb2312的方式产生了页面乱码,原因在于php文件本身是用系统字符集来编码的,中文的windows XP都是用GB2312,当apache接到浏览器的请求后,会让php去解释所请求的页面,比如 test.php。php会识别出test.php的编码方式是GB2312后(就像我们用javac编译java源文件时,编译器默认用系统编码读源文 件里的内容。如果源文件不是用系统编码来保存的,可以用命令javac -encoding指定具体的编码),把数据以GB2312的编码格式传递给apache,而apache服务器不会改变从php传来的数据,只是在应答 消息头部中把字符集设置成UTF-8: Content-type: text/html; charset=UTF-8. 也就是说你传递的是GB2312编码的数据,而浏览器却以UTF-8编码来解释应答消息。
由 于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,出现半个汉字的情况,这时该半个汉字会和的 >结合成一个乱码字,导致IE无法读完的话,会发现实际上整个叶面全部已经输出了。如果使用的是Mozilla、Mozilla Firefox、Sarafi的浏览器这不会造成这个问题,而是一堆乱码。这是由于Firefox浏览器和IE解析网页编码的策略不同产生的。
OK,我们把test.php以UTF-8保存,再用浏览器访问时,就没有问题了。可这样做,会使得apache目录下的所有web应用只能用同一种编码。如何搞定?
解决办法:
首先,可以使用AddDefaultCharset off来 关闭默认文件编码,这样apache服务器就不会在http应答消息头部设置charset,只是设置Content-type: text/html. 而浏览器就会依靠html文件中设置的harset来决定编码。其次,脚本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把该行注释掉,使php自动识别文件的编码方式。
用户提交数据的编码
浏 览器提交的字符编码由客户端的characher encoding决定。例如,当前浏览器的编码是Gb2312,用户提交数据后,无论apache设置的编码方式是GB2312还是UTF-8,这时在服 务器端接收到的仍是以Gb2312编码的数据。如果要在返回页面上显示用户刚才提交的数据,而该页面是用UTF-8编码,或者要在数据库中存储的用户提交 的数据,而数据库是UTF-8编码的,那就要做字符转换了。
注意:
有看到吗刚才我两个编写工具都使用UTF-8来编辑代码的,当我使用Dreamweaver+gb2312时编写如上办法可解决,使用UTF-8来编辑代码要有所改动default_charset = “UTF-8“,OK解决。AddDefaultCharset这东西好像在我这没用Apache2.2我用的是这个版本。
分享到:
相关推荐
php编码规范.doc php编码规范.doc
php MsSql server时遇到的中文编码问题.doc
PHP编码规范.pdf
PHP编码技巧.pdf
PHP编码规范
PHP编码规范.chm <br>欢迎访问我的博客: http://workhelper.blogbus.com
Eclipse for PHP 编码设置.docx
BIWEB-PHP-编码规则.doc
本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形成良好一致的编程风格。以达到事半功倍的效果,如果有需要本文档会不定期更新。
php编码规范
PHP实例开发源码—php大批量文件编码转换.zip
php的一些编码规范,php的一些编码规范,php的一些编码规范
PHP编码规范
基于PHP的大批量文件编码转换.zip
PHP编码规范 (第一版) 酷乐网 momo 整理 (momo@mykule.com http://mykule.com)
一份比较全面的PHP开发编码规范.doc