这问题开始开来于页面编辑工具上,后来又深入到服务器的配置中。
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编码规范是为了确保PHP代码的一致性、可读性和维护性,遵循一定的规则和最佳实践。这些规范涵盖了文件编码格式、代码结构、命名约定、缩进和换行、注释等多个方面。以下是根据提供的内容详细阐述的PHP编码规范...
php MsSql server时遇到的中文编码问题.doc
《PHP编码规范》是一份旨在提升PHP编程质量的指导文档,它汇总了众多开发者的实践经验,旨在形成一套统一且高效的编程风格。遵循这些规范,开发者可以编写出更易于阅读、维护和协作的代码,从而提高开发效率,降低...
**PHP编码规范** PHP是一种广泛使用的开源脚本语言,尤其在网络开发中占据着重要的地位。为了确保代码的可读性、可维护性和团队合作的效率,遵循统一的编码规范至关重要。"PHP 编码规范.chm"文件提供了一个详细的...
PHP编码规范.chm <br>欢迎访问我的博客: http://workhelper.blogbus.com
《PHP编码规范详解》 PHP编码规范是提升代码质量、减少错误、提高团队协作效率的重要准则。本规范详细阐述了PHP文件格式、命名规范、编码风格以及文档化要求,旨在为PHP开发者提供一套完整的指导原则。 一、PHP...
【标题】"PHP实例开发源码—php大批量文件编码转换.zip" 提供了一个实际的PHP项目,专注于处理批量文件的编码转换问题。在IT领域,尤其是Web开发中,编码转换是一个常见且重要的任务,因为不同的系统和软件可能使用...
在Eclipse for PHP中,正确设置编码可以防止乱码问题,确保在不同系统间文件的一致性。 首先,我们来详细解释如何设置Eclipse for PHP的默认编码。在Eclipse中,用户可以通过以下步骤来调整文件的默认编码: 1. ...
**PHP编码规范** PHP作为一款广泛应用的开源脚本语言,其编码规范对于保证代码的可读性、可维护性和团队协作至关重要。这份名为"PHP编码规范"的chm文档提供了全面且详细的指导,旨在帮助开发者遵循一致的编程风格,...
【PHP编码规范】 编码规范是开发过程中至关重要的指导原则,旨在提高代码的可读性、可维护性和团队协作效率。PHP编码规范详细规定了代码的编写标准,包括命名规则、结构设计、注释规范以及SQL语句的编写等。遵循...
《PHP编码规范详解》 PHP,全称“PHP:Hypertext Preprocessor”,是一种广泛使用的开源脚本语言,尤其在Web开发领域应用广泛。为了确保代码的可读性、可维护性和团队协作效率,遵循一套统一的编码规范显得至关重要...
BIWEB PHP 编码规则是针对BIWEB项目中PHP编程的一种规范,旨在提高代码质量、可读性以及团队协作效率。这份文档历经多次版本更新,由Arthur负责制定和调整,最新版本为V2.1。 ### 目标 BIWEB PHP 编码规则的主要...
《PHP编码规范》是由酷乐网的momo整理的第一版文档,旨在规范PHP开发过程中的编码行为,提高代码质量和可维护性。以下是该规范的主要内容: 1. **文件结构**: - `images`:存储图像文件。 - `include`:包含系统...
在IT行业中,API(Application Programming ...通过分析源码,开发者可以提升自己在字符编码、API调用以及错误处理等方面的能力,这对于开发跨平台软件或者处理多语言环境下的数据交换问题有着重要的实践价值。