PHP通過Get獲取中文亂碼問題

2021-10-06 11:33:07 字數 724 閱讀 1784

但是測試了半天沒有一點反應,然後我使用:

$encode = mb_detect_encoding($_request['name'], array('utf-8',"ascii","gb2312","gbk",'big5'));
判斷獲取的字串的型別,沒想到返回『utf-8』,這時我已經很鬱悶快要放棄了,後來我仔細研究了一下這個亂碼,發現它是

"%e5%bc%a0%e9%9b%b7"18位的,我的中文是兩位,在utf8編碼下應該佔6個位元組,所以我有有了疑問,後來我又想到url編碼urlencode與urldecode兩個函式的使用,想到就行動,一經測試果然是這個url編碼的問題。

下來講解一下原因吧:在網際網路上傳送url,只能採用ascii字元:也就是說url只能使用英文本母、阿拉伯數字和某些標點符號,不能使用其他文字和符號,即

只有字母和數字 [0-9a-za-z] 、一些特殊符號 $-_.+!*'() [不包括雙引號]、以及某些保留字(空格轉換為 +),才可以不經過編碼直接用於url;

這意味著 如果url中有漢字,就必須編碼後使用。 但是麻煩的是 標準的國際組織並沒有規定具體的編碼方法,而是交給應用程式(瀏覽器)自己決定。 這導致"url編碼"成為了乙個混亂的領域。

如果包含中文,其實會自動編碼的,比如chrome和火狐,而這兩個瀏覽器也是開發者最常用到的所以他會自動編碼。

希望這篇文章能幫到和我一樣遇到這樣問題的朋友!

jquery 獲取url鏈結引數 中文亂碼問題

encodeuri 函式可把字串作為 uri 進行編碼。decodeuri 函式可對 encodeuri 函式編碼過的 uri 進行解碼 頁面一 傳遞ur var vensdata 111 var vensname 你好世界 var venssions 10.10.10.10 searchurl e...

PHP 解決PHP和MySQL的中文亂碼問題

php連線資料庫的時候經常會出現中文亂碼,一般只需要檢查編碼是否統一就可以解決亂碼問題。1.資料庫的字元編碼 可以將將所有編碼設定為utf 8。這樣在資料庫中就能正常顯示中文了,phpadmin預設的就是utf 8編碼。2.頁面檔案的字元編碼 在編輯器中右擊,選擇編碼方式也為utf8即可。3.php...

webView loadData 中文亂碼問題

使用 loaddata方法是中文部分會出現亂碼,即使指定 utf 8 gbk gb2312 也一樣。webview.getsettings setdefaulttextencodingname utf 8 設定預設為utf 8 text html utf 8 api提供的標準用法,無法解決亂碼問題 ...