欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

php獲取get參數(shù)亂碼的解決方法-創(chuàng)新互聯(lián)

本文將為大家詳細(xì)介紹“php獲取get參數(shù)亂碼的解決方法”,內(nèi)容步驟清晰詳細(xì),細(xì)節(jié)處理妥當(dāng),而小編每天都會(huì)更新不同的知識(shí)點(diǎn),希望這篇“php獲取get參數(shù)亂碼的解決方法”能夠給你意想不到的收獲,請(qǐng)大家跟著小編的思路慢慢深入,具體內(nèi)容如下,一起去收獲新知識(shí)吧。

成都創(chuàng)新互聯(lián)是專業(yè)的贛榆網(wǎng)站建設(shè)公司,贛榆接單;提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行贛榆網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

php有什么用

php是一個(gè)嵌套的縮寫名稱,指的是英文超級(jí)文本預(yù)處理語言(php:Hypertext Preprocessor)的縮寫,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因?yàn)閜hp是開源的,從而使得php經(jīng)久不衰。

php獲取get參數(shù)亂碼的解決辦法:1、通過“$str=iconv("gb2312","utf-8",$str);”方式處理編碼;2、通過“mb_convert_encoding($str,"utf-8", "gb2312");”方式處理。

PHP接收GET中文參數(shù)亂碼深入研究

相信很多PHPer都會(huì)遇到這樣的問題:在utf-8的頁面下面,如果直接訪問帶有中文參數(shù)的地址如test.php?s=測(cè)試這樣的地址輸出參數(shù)的值會(huì)亂碼,在搜索引擎上查詢了下相關(guān)資料,都只給出了一些解決方案,但是卻沒有人研究導(dǎo)致這個(gè)問題的原因,今天特寫此文來深入這個(gè)問題產(chǎn)生的原因:

首先我們演示這個(gè)問題,測(cè)試代碼和運(yùn)行結(jié)果如下。

代碼:

php獲取get參數(shù)亂碼的解決方法

測(cè)試結(jié)果:

php獲取get參數(shù)亂碼的解決方法

代碼中聲明了響應(yīng)內(nèi)容的編碼為utf-8,顯示的內(nèi)容確實(shí)亂碼。

在這里請(qǐng)注意var_dump出變量的長(zhǎng)度只有4,很顯然,兩個(gè)中文字的長(zhǎng)度在utf-8編碼下肯定不止4個(gè)字節(jié)

然后我們?cè)倏匆幌翭irefox的訪問這個(gè)頁面url

php獲取get參數(shù)亂碼的解決方法

FireFox會(huì)自動(dòng)將中文url編碼,所以我們可以看到測(cè)試變成了%B2%E2%CA%D4,很明顯,這里一個(gè)字是兩個(gè)字節(jié),是gb2313、gbk等中文編碼格式,而不是utf-8編碼。()

如果我們把頁面的編碼切換為gbk,中文參數(shù)就會(huì)顯示正常,參見下圖

php獲取get參數(shù)亂碼的解決方法

這時(shí)一個(gè)有趣的問題就誕生了:像emlog的中文標(biāo)簽這樣的參數(shù)怎么就沒有亂碼呢?

多方測(cè)試后,我發(fā)現(xiàn)了一個(gè)小小的區(qū)別:

emlog中文參數(shù)的鏈接是在頁面上生成的,而上面我們測(cè)試則用手直接在地址欄輸入的,

如果我們直接輸入例如http://be-evil.org/?tag=原創(chuàng)這樣的鏈接,程序同樣會(huì)提示找不到標(biāo)簽

測(cè)試代碼如下:

php獲取get參數(shù)亂碼的解決方法

測(cè)試結(jié)果,正常顯示:


php獲取get參數(shù)亂碼的解決方法

請(qǐng)注意上圖中紅框標(biāo)出的url編碼,這次測(cè)試兩個(gè)字是由6個(gè)字節(jié)組成,而不是先前的2個(gè)字節(jié),因此表明中文參數(shù)已經(jīng)正確的成為utf-8編碼。

那么,是什么導(dǎo)致這個(gè)問題的發(fā)生呢?

答案是瀏覽器默認(rèn)編碼  在作怪,我們都用的是中文系統(tǒng),瀏覽器默認(rèn)的編碼自然也會(huì)設(shè)置為本地化,例如我自己電腦上的IE的FireFox的默認(rèn)編碼都是gb系列的,請(qǐng)參看下圖:

IE的默認(rèn)設(shè)置:


php獲取get參數(shù)亂碼的解決方法

Firefox的默認(rèn)設(shè)置:


php獲取get參數(shù)亂碼的解決方法

正因?yàn)檫@個(gè)設(shè)置,讓瀏覽器在請(qǐng)求用戶輸入的url時(shí)會(huì)默認(rèn)把url中的中文以默認(rèn)的編碼格式發(fā)送而不是以頁面的編碼格式發(fā)送,這就是為什么頁面中帶有中文的鏈接正常而我們手動(dòng)輸入的鏈接會(huì)亂碼的原因。同理,如果我們把瀏覽器的默認(rèn)編碼調(diào)整為utf-8,那么輸入url中的中文則會(huì)按照utf-8編碼。

除了上面的之外,還有以下情況會(huì)出現(xiàn)這種情況:

如果gbk編碼的頁面生成的地址鏈接到utf-8的頁面,gbk頁面的中文是按照gbk的格式編碼傳送給下個(gè)頁面,那么utf-8編碼接收后肯定會(huì)出現(xiàn)亂碼。

IIS的url重寫模塊,重寫后的中文編碼也是gbk,如果你的頁面是utf-8編碼,那么重寫參數(shù)將會(huì)失效。

像這些情況,我們就需要使用php內(nèi)置的轉(zhuǎn)碼函數(shù)來處理編碼問題了:

方案1:

$str =iconv("gb2312","utf-8",$str);

方案2:

mb_convert_encoding($str,"utf-8", "gb2312");

如果你能讀到這里,小編希望你對(duì)“php獲取get參數(shù)亂碼的解決方法”這一關(guān)鍵問題有了從實(shí)踐層面最深刻的體會(huì),具體使用情況還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享文章:php獲取get參數(shù)亂碼的解決方法-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://chinadenli.net/article24/hhjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)網(wǎng)站制作動(dòng)態(tài)網(wǎng)站網(wǎng)站排名網(wǎng)站內(nèi)鏈云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司