欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
IcyRiver apache php 字符編碼問(wèn)題解決

apache+php 字符編碼問(wèn)題解決

問(wèn)題:

如果你在網(wǎng)上搜索 “apache配置”,搜到的頁(yè)面大多都會(huì )建議你在httpd.conf中加上這么一句:AddDefaultCharset GB2312。對于新手而且是只用GB2312編碼的開(kāi)發(fā)人來(lái)說(shuō),這么做是ok的。

但是如果要想使用UTF-8字符集的話(huà),比如 在test.php文件中需要有
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″
這段代碼。這時(shí)你再打開(kāi)瀏覽器訪(fǎng)問(wèn)test.php頁(yè)面的話(huà),你看到的是正確的頁(yè)面。但是如果實(shí)際上瀏覽器還是以GB2312編碼解釋從服務(wù)器返回的response,為什么呢?原因是瀏覽器是根據http應答消息頭部中的 Content-type: text/html; charset=GB2312 來(lái)決定使用何種編碼解釋?xiě)?,也就是說(shuō)apache服務(wù)器仍然用GB2312編碼傳遞數據。

所以說(shuō)如果apache的默認字符集被設置成了GB2312,即使在頁(yè)面中聲明使用UTF-8編碼,apache服務(wù)器還是會(huì )按照GB2312編碼來(lái)傳送http response。

沒(méi) 關(guān)系,我們把AddDefaultCharset GB2312 改成 AddDefaultCharset UTF-8,看看什么結果?如果你看到亂碼恭喜你,你還知道是亂碼問(wèn)題;如果你看到是空白頁(yè)面,那么你就慘了,你可能會(huì )以為這是其他什么原因造成的,而不 會(huì )從編碼的角度去考慮怎么解決問(wèn)題。這是為什么?

原因在于php文件本身是用系統字符集來(lái)編碼的,中文的windows XP都是用GB2312,每一個(gè)文件頭部都有字段指示該文件是用何種方式編碼的。當apache接到瀏覽器的請求后,會(huì )讓php去解釋所請求的頁(yè)面,比如 test.php。php會(huì )識別出test.php的編碼方式是GB2312后(就像我們用javac編譯java源文件時(shí),編譯器默認用系統編碼讀源文 件里的內容。如果源文件不是用系統編碼來(lái)保存的,可以用命令javac -encoding指定具體的編碼),把數據以GB2312的編碼格式傳遞給apache,而apache服務(wù)器不會(huì )改變從php傳來(lái)的數據,只是在應答 消息頭部中把字符集設置成UTF-8: Content-type: text/html; charset=UTF-8. 也就是說(shuō)你傳遞的是GB2312編碼的數據,而瀏覽器卻以UTF-8編碼來(lái)解釋?xiě)鹣ⅰ?/p>

由 于UTF-8為3個(gè)字節表示一個(gè)漢子,而普通的GB2312或BIG5是兩個(gè)。頁(yè)面輸出時(shí),由于上述原因,出現半個(gè)漢字的情況,這時(shí)該半個(gè)漢字會(huì )和的 >結合成一個(gè)亂碼字,導致IE無(wú)法讀完的話(huà),會(huì )發(fā)現實(shí)際上整個(gè)葉面全部已經(jīng)輸出了。如果使用的是Mozilla、Mozilla Firefox、Sarafi的瀏覽器這不會(huì )造成這個(gè)問(wèn)題,而是一堆亂碼。這是由于Firefox瀏覽器和IE解析網(wǎng)頁(yè)編碼的策略不同產(chǎn)生的。

OK,我們把test.php以UTF-8保存,再用瀏覽器訪(fǎng)問(wèn)時(shí),就沒(méi)有問(wèn)題了??蛇@樣做,會(huì )使得apache目錄下的所有web應用只能用同一種編碼。如何搞定?

解決辦法:

首先,可以使用AddDefaultCharset off來(lái) 關(guān)閉默認文件編碼,這樣apache服務(wù)器就不會(huì )在http應答消息頭部設置charset,只是設置Content-type: text/html. 而瀏覽器就會(huì )依靠html文件中設置的harset來(lái)決定編碼。其次,腳本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把該行注釋掉,使php自動(dòng)識別文件的編碼方式。

這樣不論你用什么編碼方式,只要test.php中的
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 與你test.php文件編碼方式相同,就不會(huì )產(chǎn)生亂碼問(wèn)題。

用戶(hù)提交數據的編碼

瀏 覽器提交的字符編碼由客戶(hù)端的characher encoding決定。例如,當前瀏覽器的編碼是Gb2312,用戶(hù)提交數據后,無(wú)論apache設置的編碼方式是GB2312還是UTF-8,這時(shí)在服 務(wù)器端接收到的仍是以Gb2312編碼的數據。如果要在返回頁(yè)面上顯示用戶(hù)剛才提交的數據,而該頁(yè)面是用UTF-8編碼,或者要在數據庫中存儲的用戶(hù)提交 的數據,而數據庫是UTF-8編碼的,那就要做字符轉換了。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
php的中文編碼問(wèn)題
PHP中文亂碼的三個(gè)原因及解決方法
php編碼問(wèn)題:PHP開(kāi)發(fā)中的中文編碼問(wèn)??PHP教程 Web開(kāi)??瘋狂代碼
apache的網(wǎng)頁(yè)內容顯示是亂碼
[逐浪者] @Joomlar,the user group for joomla! - 空白顯示頁(yè)面問(wèn)題的解決
頁(yè)面亂碼問(wèn)題根源淺析
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久