小魔女 发表于 2015-1-16 13:57:23

带来一篇关于Apache默许编码毛病 招致网站乱码的办理计划

网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup
比来常常有同砚在利用LAMP/WAMP时,碰到如许的编码毛病成绩:

A网站程序编码UTF-8编码安装乐成,运转乐成。

B网站程序编gb2312也要安装在统一服务器上。

如许就呈现成绩了,Apache默许编码UTF-8在剖析A网站的时分没有任何成绩,当运转B网站时呈现的"蝌蚪文"乱码成绩。

纯真的修正Apache默许编码为gb2312如许就招致A网站呈现"蝌蚪文"。

成绩剖析:

假如你在网上搜刮“apache设置”,搜到的页面年夜多城市倡议你在httpd.conf中加上这么一句:AddDefaultCharsetGB2312。

关于老手并且是只用GB2312编码的开辟人来讲,这么做是ok的。可是假如要想利用UTF-8字符集的话,好比在test.php文件中必要有metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"这段代码。

这时候你再翻开扫瞄器会见test.php页面的话,你看到的是准确的页面。可是假如实践上扫瞄器仍是以GB2312编码注释从服务器前往的response,为何呢?缘故原由是扫瞄器是依据http应对动静头部中的Content-type:text/html;charset=GB2312来决意利用何种编码注释应对,也就是说apache服务器仍旧用GB2312编码传送数据。

以是说假如apache的默许字符集被设置成了GB2312,即便在页面中声明利用UTF-8编码,apache服务器仍是会依照GB2312编码来传送httpresponse。不妨,我们把AddDefaultCharsetGB2312改成AddDefaultCharsetUTF-8,看看甚么了局?

假如你看到乱码祝贺你,你还晓得是乱码成绩;假如你看到是空缺页面,那末你就惨了,你大概会觉得这是其他甚么缘故原由酿成的,而不会从编码的角度往思索怎样办理成绩。这是为何?缘故原由在于php文件自己是用体系字符集来编码的,中文的windowsXP都是用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、MozillaFirefox、Sarafi的扫瞄器这不会形成这个成绩,而是一堆乱码。这是因为Firefox扫瞄器和IE剖析网页编码的战略分歧发生的。OK,我们把test.php以UTF-8保留,再用扫瞄器会见时,就没有成绩了。

可如许做,会使得apache目次下的一切web使用只能用统一种编码。怎样弄定?

办理举措:

起首,可使用AddDefaultCharsetoff来封闭默许文件编码,如许apache服务器就不会在http应对动静头部设置charset,只是设置Content-type:text/html.而扫瞄器就会依托html文件中设置的harset来决意编码。

其次,剧本php.ini文件中的default_charset=“UTF-8″感化同httpd.conf文件,把该行正文失落,使php主动辨认文件的编码体例。

如许不管你用甚么编码体例,只需test.php中的metahttp-equiv=”Content-Type”content=”text/html;charset=UTF-8″与你test.php文件编码体例不异,就不会发生乱码成绩。用户提交数据的编码扫瞄器提交的字符编码由客户真个characherencoding决意。

比方,以后扫瞄器的编码是Gb2312,用户提交数据后,不管apache设置的编码体例是GB2312仍是UTF-8,这时候在服务器端吸收到的还是以Gb2312编码的数据。

假如要在前往页面上显现用户方才提交的数据,而该页面是用UTF-8编码的大概要在数据库中存储的用户提交的数据,而数据库是UTF-8编码的,那就要做字符转换了。
安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh

山那边是海 发表于 2015-1-18 11:24:59

我们这一代90后,从小接触的是windows98,家里条件好的自己有电脑装的是2000,后来又有了XP,上大学时又有了win7。

第二个灵魂 发表于 2015-1-26 05:55:51

选择交流平台,如QQ群,网站论坛等。

深爱那片海 发表于 2015-2-4 14:58:09

用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。

小女巫 发表于 2015-2-10 02:24:15

让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。?

冷月葬花魂 发表于 2015-2-28 18:08:51

说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?

金色的骷髅 发表于 2015-3-10 05:54:05

然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。

因胸联盟 发表于 2015-3-17 05:17:29

硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。

乐观 发表于 2015-3-23 22:44:26

当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。
页: [1]
查看完整版本: 带来一篇关于Apache默许编码毛病 招致网站乱码的办理计划