关于Apache默认编码错误,导致网站乱码的解决方案,apache编码
最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题:
A网站程序编码UTF-8编码安装成功,运行成功。
B网站程序编gb2312也要安装在同一服务器上。
这样就出现问题了,Apache默认编码UTF-8在解析A网站的时候没有任何问题,当运行B网站时出现的"蝌蚪文"乱码问题。
单纯的修改Apache默认编码为gb2312这样就导致A网站出现"蝌蚪文"。
问题分析:
如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312。
对于新手而且是只用GB2312编码的开发人来说,这么做是ok的。但是如果要想使用UTF-8字符集的话,比如 在test.php文件中需要有 meta http-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编码来传送http response。没关系,我们把AddDefaultCharset GB2312 改成 AddDefaultCharset UTF-8,看看什么结果?
如果你看到乱码恭喜你,你还知道是乱码问题;如果你看到是空白页面,那么你就惨了,你可能会以为这是其他什么原因造成的,而不会从编码的角度去考虑怎么解决问题。这是为什么?原因在于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自动识别文件的编码方式。
这样不论你用什么编码方式,只要test.php中的meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 与你test.php文件编码方式相同,就不会产生乱码问题。用户提交数据的编码浏览器提交的字符编码由客户端的characher encoding决定。
例如,当前浏览器的编码是Gb2312,用户提交数据后,无论apache设置的编码方式是GB2312还是UTF-8,这时在服务器端接收到的仍是以Gb2312编码的数据。
如果要在返回页面上显示用户刚才提交的数据,而该页面是用UTF-8编码的或者要在数据库中存储的用户提交的数据,而数据库是UTF-8编码的,那就要做字符转换了。

大家都知道,7-zip是一款完全免费的压缩解压缩软件,同其他压缩软件相比它的压缩速度更快压缩率更好,很多用户疑惑7-zip软件怎么把一个大文件压缩到最小?针对这个问题,小编给出了解答。 7-zip软件怎么把一个大文件压缩到最小?首先,下载并安装7-zip软件在您的计算机上。接着,右键点击要压缩的文件,查看源文件大小并记录。然后,在该文件上再次右键点击,选择7-zip-添加到压缩包。这样会弹出一个窗口,显示“添加到压缩包”。 2、接着我们在压缩窗口里面设置压缩格式,压缩等级上选择最大压缩,

随着计算机技术的不断发展,文件的处理已经成为计算机使用者日常工作中必不可少的一部分。随着文件存储量不断增加,压缩文件已经成为了一种十分必要的操作。而在这个过程中,使用Go语言进行文件压缩和解压已经成为了一个备受关注的话题。Go语言自身提供了丰富的标准库,其中就包含了处理文件操作的相关工具函数。正是因为如此,使用Go语言进行文件压缩和解压操作相对于其

如何利用PHP开发一个简单的文件压缩功能概述:文件压缩是一种常用的技术,通过减小文件的体积,可以提高文件传输效率、节省存储空间,并便于文件的备份和分享。本文将介绍如何基于PHP开发一个简单的文件压缩功能,通过对文件进行压缩和解压,实现文件的压缩和解压缩操作。步骤:创建一个PHP文件:首先,创建一个PHP文件,命名为compress.php。压缩文件:在com

Win10右键没有文件压缩怎么办?使用win10系统的时候,我们经常会遇到各式各样的小问题,就有小伙伴在下载安装了win10系统之后,发现win10系统没有文件压缩功能,这样我们就没有压缩和解压文件。那么应该如何解决这个问题,小编下面整理了Win10右键没有文件压缩解决教程,感兴趣的话,跟着小编一起往下看看吧!Win10右键没有文件压缩解决教程打开winrar程序,或新建空包再打开,点击工具栏上“选项”下的设置,或直接快捷键“Ctrl+S”打开设置界面;然后从默认常规选项卡切换到最后一项“综合”

如何优化Java开发中的文件压缩解压并发性能随着互联网的迅速发展,大量的数据交换和存储已成为当今信息时代的重要组成部分。在此过程中,经常需要对数据进行压缩和解压缩的操作,以提高数据传输的效率和节约存储空间。在Java开发中,常常使用压缩算法来进行文件的压缩和解压缩操作。然而,在处理大量文件的同时,需要考虑并发性能的优化,以提高程序的运行效率。本文将介绍一些优

Python3.x中如何使用gzip模块进行文件压缩和解压缩引言:在日常的开发中,我们经常需要对文件进行压缩和解压缩操作。Python中的gzip模块提供了方便且简洁的API,可以在处理文件时进行gzip压缩和解压缩操作。本文将介绍如何使用gzip模块进行文件的压缩和解压缩,并给出相应的代码示例。压缩文件:gzip模块中的GzipFile类提供了压缩文件

如何优化C++开发中的文件压缩速度导言:随着互联网和移动设备的普及,文件传输变得越来越频繁。为了减少传输时间和网络带宽的消耗,文件压缩成为了一种常见的处理方式。C++作为一种高性能的编程语言,被广泛应用于开发文件压缩工具。然而,如何在C++开发中优化文件压缩速度仍然是一个需要解决的问题。本文将从算法优化、硬件优化和多线程优化三个方面介绍如何提升文件压缩的速度

深入理解Java开发中的文件压缩与解压缩技术随着互联网的高速发展和信息技术的日新月异,大量的数据交换和传输已经成为当今社会的常态。为了高效地存储和传输数据,文件压缩与解压缩技术应运而生。在Java开发中,文件压缩与解压缩是一个必备的技能,本文将深入探讨这一技术的原理和使用方法。一、文件压缩与解压缩的原理在计算机中,文件压缩就是将一个或多个文件通过使用特定的算


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版
好用的JavaScript開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器