要解決Apache中文亂碼的情況,先修改httpd.conf (在Redhat中放置的位置為/etc/httpd/conf/)
查找:
AddDefaultCharset ISO-8859-1
改成:
#AddDefaultCharset ISO-8859-1
AddDefaultCharset off
這種方式關掉了服務器的默認語言的發送,這樣僅憑html文件頭中設置的語言來決定網頁語言。
很多文章都說通過修改為 AddDefaultCharset GB2312 把缺省語言改成GB2312來解決中文亂碼,確實GB2312內碼的網頁可以正常顯示了,但這并非萬全之策。因為當你的網頁內碼不是GB2312,就算你在網頁用下面的meta指定了正確的語言,如ISO8859-1,也不會解碼為ISO8859-1,因為Apache已經先你一步將GB2312指定為網頁的語言了,如下圖:
而這個是加了 AddDefaultCharset off 后的:
修改后請重新啟動Apache,在Redhat中命令為
/etc/init.d/httpd restart
當使用一些網頁腳本引擎,如PHP,還可能需要修改相應的配置文件。
以PHP為例,需要修改php.ini (Red Hat中位置在/etc/)
找到:
default_charset = "iso-8859-1" 或者類似的,如 default_charset = "gb2312",將其注釋掉:
default_charset="iso-8859-1"
客戶端:
在中文網頁請中依情況在標簽中添加:
GB2312:
<META content="text/html; charset=gb2312" http-equiv="Content-Type">
BIG5:
<META content="text/html; charset=big5" http-equiv="Content-Type">
UTF-8: (注意是UTF-8,而不是UTF8,我已經上過當了)
<META content="text/html; charset=utf-8" http-equiv="Content-Type">
如果還是不正常,請清空瀏覽器的Cache后,應該就可以解決亂碼的現象了。