最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于Apache默認編碼錯誤 導致網(wǎng)站亂碼的解決方案

 更新時間:2011年12月07日 16:20:40   作者:  
Apache默認編碼UTF-8在解析A網(wǎng)站的時候沒有任何問題,當運行B網(wǎng)站時出現(xiàn)的"蝌蚪文"亂碼問題
最近經常有同學在使用LAMP/WAMP時,遇到這樣的編碼錯誤問題:

A網(wǎng)站程序編碼UTF-8編碼安裝成功,運行成功。

B網(wǎng)站程序編gb2312也要安裝在同一服務器上。

這樣就出現(xiàn)問題了,Apache默認編碼UTF-8在解析A網(wǎng)站的時候沒有任何問題,當運行B網(wǎng)站時出現(xiàn)的"蝌蚪文"亂碼問題。

單純的修改Apache默認編碼為gb2312這樣就導致A網(wǎng)站出現(xiàn)"蝌蚪文"。

問題分析:

如果你在網(wǎng)上搜索 “apache配置”,搜到的頁面大多都會建議你在httpd.conf中加上這么一句:AddDefaultCharset GB2312。

對于新手而且是只用GB2312編碼的開發(fā)人來說,這么做是ok的。但是如果要想使用UTF-8字符集的話,比如 在test.php文件中需要有 meta http-equiv="Content-Type" content="text/html; charset=UTF-8" 這段代碼。

這時你再打開瀏覽器訪問test.php頁面的話,你看到的是正確的頁面。但是如果實際上瀏覽器還是以GB2312編碼解釋從服務器返回的response,為什么呢?原因是瀏覽器是根據(jù)http應答消息頭部中的 Content-type: text/html; charset=GB2312 來決定使用何種編碼解釋應答,也就是說apache服務器仍然用GB2312編碼傳遞數(shù)據(jù)。

所以說如果apache的默認字符集被設置成了GB2312,即使在頁面中聲明使用UTF-8編碼,apache服務器還是會按照GB2312編碼來傳送http response。沒關系,我們把AddDefaultCharset GB2312 改成 AddDefaultCharset UTF-8,看看什么結果?

如果你看到亂碼恭喜你,你還知道是亂碼問題;如果你看到是空白頁面,那么你就慘了,你可能會以為這是其他什么原因造成的,而不會從編碼的角度去考慮怎么解決問題。這是為什么?原因在于php文件本身是用系統(tǒng)字符集來編碼的,中文的windows XP都是用GB2312,每一個文件頭部都有字段指示該文件是用何種方式編碼的。當apache接到瀏覽器的請求后,會讓php去解釋所請求的頁面,比如 test.php。php會識別出test.php的編碼方式是GB2312后(就像我們用javac編譯java源文件時,編譯器默認用系統(tǒng)編碼讀源文件里的內容。

如果源文件不是用系統(tǒng)編碼來保存的,可以用命令javac -encoding指定具體的編碼),把數(shù)據(jù)以GB2312的編碼格式傳遞給apache,而apache服務器不會改變從php傳來的數(shù)據(jù),只是在應答消息頭部中把字符集設置成UTF-8: Content-type: text/html; charset=UTF-8. 也就是說你傳遞的是GB2312編碼的數(shù)據(jù),而瀏覽器卻以UTF-8編碼來解釋應答消息。

由于UTF-8為3個字節(jié)表示一個漢子,而普通的GB2312或BIG5是兩個。頁面輸出時,由于上述原因,出現(xiàn)半個漢字的情況,這時該半個漢字會和的>結合成一個亂碼字,導致IE無法讀完的話,會發(fā)現(xiàn)實際上整個葉面全部已經輸出了。如果使用的是Mozilla、Mozilla Firefox、Sarafi的瀏覽器這不會造成這個問題,而是一堆亂碼。這是由于Firefox瀏覽器和IE解析網(wǎng)頁編碼的策略不同產生的。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文件編碼方式相同,就不會產生亂碼問題。用戶提交數(shù)據(jù)的編碼瀏覽器提交的字符編碼由客戶端的characher encoding決定。

例如,當前瀏覽器的編碼是Gb2312,用戶提交數(shù)據(jù)后,無論apache設置的編碼方式是GB2312還是UTF-8,這時在服務器端接收到的仍是以Gb2312編碼的數(shù)據(jù)。

如果要在返回頁面上顯示用戶剛才提交的數(shù)據(jù),而該頁面是用UTF-8編碼的或者要在數(shù)據(jù)庫中存儲的用戶提交的數(shù)據(jù),而數(shù)據(jù)庫是UTF-8編碼的,那就要做字符轉換了。

相關文章

  • Linux服務器安裝pytorch和scanpy流程

    Linux服務器安裝pytorch和scanpy流程

    文章詳細記錄了作者在Linux上安裝PyTorch和Scanpy的艱難過程,包括環(huán)境創(chuàng)建、包安裝、依賴關系處理以及遇到的沖突和解決方法,最終,作者成功在服務器上安裝了兼容的PyTorch和Scanpy版本
    2025-02-02
  • CentOS 安裝 Mongodb詳解(在線和離線)

    CentOS 安裝 Mongodb詳解(在線和離線)

    這篇文章主要介紹了CentOS 安裝 Mogodb詳解(在線和離線) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Linux運維之如何使用ss命令代替netstat

    Linux運維之如何使用ss命令代替netstat

    這篇文章主要給大家介紹了關于Linux運維之如何使用ss命令代替netstat的相關資料,需要的朋友可以參考下
    2019-07-07
  • centos7下安裝oracle11gR2的詳細步驟

    centos7下安裝oracle11gR2的詳細步驟

    本篇文章主要介紹了centos7下安裝oracle11gR2的詳細步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • linux環(huán)境配置nginx導致頁面不刷新的解決方法

    linux環(huán)境配置nginx導致頁面不刷新的解決方法

    這篇文章介紹了linux環(huán)境配置nginx導致頁面不刷新的解決方法,有需要的朋友可以參考一下
    2013-09-09
  • Linux alias的三種使用場景方式

    Linux alias的三種使用場景方式

    文章介紹了Linux中`alias`命令的三種使用場景:臨時別名、用戶級別別名和系統(tǒng)級別別名,臨時別名僅在當前終端有效,用戶級別別名在當前用戶下所有終端有效,系統(tǒng)級別別名對所有用戶生效,文章還提供了創(chuàng)建、修改、刪除別名的方法
    2025-01-01
  • 詳解Ubuntu中apt和apt-get命令的區(qū)別

    詳解Ubuntu中apt和apt-get命令的區(qū)別

    在Ubuntu及其他基于Debian的Linux發(fā)行版中,軟件包管理是系統(tǒng)維護的一個重要方面,apt和apt-get是兩個常用的命令行工具,用于安裝、更新、刪除和管理軟件包,本文給大家介紹了Ubuntu中apt和apt-get命令的區(qū)別,需要的朋友可以參考下
    2024-06-06
  • Linux系統(tǒng)的修復模式(單用戶模式)

    Linux系統(tǒng)的修復模式(單用戶模式)

    大家好,本篇文章主要講的是Linux系統(tǒng)的修復模式(單用戶模式),感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • CentOS中環(huán)境變量與配置文件的深入講解

    CentOS中環(huán)境變量與配置文件的深入講解

    這篇文章主要給大家介紹了關于CentOS中環(huán)境變量與配置文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用CentOS具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-10-10
  • linux線程間的同步與互斥知識點總結

    linux線程間的同步與互斥知識點總結

    在本篇文章里小編給大家整理的是關于linux線程間的同步與互斥的相關知識點,有興趣的朋友們學習下。
    2019-11-11

最新評論

雅安市| 卢龙县| 沿河| 连山| 通辽市| 同江市| 增城市| 三河市| 沽源县| 剑河县| 丰台区| 临汾市| 同心县| 栾川县| 漳浦县| 连城县| 杭锦旗| 宁武县| 潜山县| 平顶山市| 扎赉特旗| 桂阳县| 吐鲁番市| 闽清县| 卢龙县| 沭阳县| 金门县| 佛山市| 浦东新区| 彝良县| 抚州市| 西盟| 肥西县| 鄱阳县| 南昌县| 宁晋县| 淮北市| 仙居县| 府谷县| 桂阳县| 浦城县|