① 本人php菜鳥,問個urlencode的問題!~~~~~~
需要自己寫個函數來轉。判斷如果是字母和數字,則調用自己寫的函數。下面是用來轉換的碼表
$code = array(
'0' => '%30',
'1' => '%31',
'2' => '%32',
'3' => '%33',
'4' => '%34',
'5' => '%35',
'6' => '%36',
'7' => '%37',
'8' => '%38',
'9' => '%39',
'A' => '%41',
'B' => '%42',
'C' => '%43',
'D' => '%44',
'E' => '%45',
'F' => '%46',
'G' => '%47',
'H' => '%48',
'I' => '%49',
'J' => '%4A',
'K' => '%4B',
'L' => '%4C',
'M' => '%4D',
'N' => '%4E',
'O' => '%4F',
'P' => '%50',
'Q' => '%51',
'R' => '%52',
'S' => '%53',
'T' => '%54',
'U' => '%55',
'V' => '%56',
'W' => '%57',
'X' => '%58',
'Y' => '%59',
'Z' => '%5A',
'a' => '%61',
'b' => '%62',
'c' => '%63',
'd' => '%64',
'e' => '%65',
'f' => '%66',
'g' => '%67',
'h' => '%68',
'i' => '%69',
'j' => '%6A',
'k' => '%6B',
'l' => '%6C',
'm' => '%6D',
'n' => '%6E',
'o' => '%6F',
'p' => '%70',
'q' => '%71',
'r' => '%72',
's' => '%73',
't' => '%74',
'u' => '%75',
'v' => '%76',
'w' => '%77',
'x' => '%78',
'y' => '%79',
'z' => '%7A',
)
② PHP如何對多維數組的鍵值對進行urlencode轉碼
你好,可以使用遞歸。
functionarray_urlencode($data){
$new_data=array();
foreach($dataas$key=>$val){
//這里我對鍵也進行了urlencode
$new_data[urlencode($key)]=is_array($val)?array_urlencode($val):urlencode($val);
}
return$new_data;
}
$array=array(
"中國"=>"北京",
"美國"=>"華盛頓",
"英國"=>"倫敦",
"city"=>"倫敦",
"多維"=>array("阿斯頓"=>"爾特人",array("豆腐乾豆腐","請問"))
);
var_mp(array_urlencode($array));
③ PHP用URL傳參數,在解密就解不出來,在原來程序即加密又解密,就沒有問題,怎麼回事
對url密文用decode進行URL編碼一下,接收時再用urldecode解碼下再解密,這樣做是為了避免被密文中的特殊字元影響
④ %C9%CF%BA%A3 是一個經過php urlencode加密後的字元串 請問用什麼javascript的函數或者代碼 可以解碼成中
decodeURIComponent 方法
返回統一資源標識符 (URI) 的一個已編碼組件的非編碼形式。
decodeURIComponent(encodedURIString)
必選的 encodedURIString 參數代表一個已編碼的 URI 組件。
可以試試
⑤ php頁面解決亂碼問題
1、文件編碼:指的是頁面文件(.html,.php等)本身是以何種編碼來保存的。記事本和Dreamweaver在打開頁面時候會自動識別文件編碼因而不太會出問題。而ZendStudio卻不會自動識別編碼,它只會根據首選項的配置固定以某種編碼打開文件,如果工作時候一不注意,用錯誤編碼打開文件,做了修改之後一保存,亂碼就出現了(我深有體會)。
2、頁面申明編碼:在HTML代碼HEAD裡面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />來告訴瀏覽器網頁採用了什麼編碼,目前中文網站開發中XXX主要用的是GB2312和UTF-8兩種編碼。
3、資料庫連接編碼:指的是進行資料庫操作時候以哪種編碼與資料庫傳輸數據,這里需要注意的是不要與資料庫本身的編碼混淆,比如MySQL內部默認是latin1編碼,也就是說Mysql是以latin1編碼來存儲數據,以其他編碼傳輸給Mysql的數據會被轉換成latin1編碼。
知道了WEB開發中哪些地方涉及到了編碼,也就知道了PHP頁面亂碼產生的原因:上述3項編碼設置不一致,由於各種編碼絕大部分是兼容ASCII的,所以英文符號不會出現,中文就倒霉了。下面是一些常見的錯誤情況與解決:
1、資料庫採用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產生亂碼的原因。這時候在PHP腳本裡面直接SELECT數據出來的就是PHP頁面亂碼,需要在查詢前先使用:
mysql_query("SET NAMES GBK"); 來設定MYSQL連接編碼,保證頁面申明編碼與這里設定的連接編碼一致(GBK是GB2312的擴展)。如果頁面是UTF-8編碼的話,可以用:
mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與資料庫內部編碼一致可以不設定連接編碼。
註:事實上MYSQL的數據輸入輸出比上面講的更復雜一些,MYSQL配置文件my.ini中定義了2個默認編碼,分別是[client]里的default-character-set和[mysqld]里的default-character-set來分別設定默認時候客戶端連接和資料庫內部所採用的編碼。我們上面指定的編碼其實是MYSQL客戶端連接伺服器時候的命令行參數character_set_client,來告訴MYSQL伺服器接受到的客戶端數據是什麼編碼的,而不是採用默認編碼。
2、頁面申明編碼與文件本身編碼不一致,這種情況很少發生,因為如果編碼不一致美工做頁面時候在瀏覽器看到的就是亂碼了。更多時候是發布以後修改一些小BUG,以錯誤編碼打開頁面然後保存導致的。或者是用某些FTP軟體直接在線修改文件,比如CuteFTP,由於軟體編碼配置錯誤而導致轉換錯了編碼。
3、一些租用虛擬主機的朋友,明明上述3項編碼都設置正確了還是有PHP頁面亂碼。比方說網頁是GB2312編碼的,IE等瀏覽器打開卻總是識別成UTF-8,網頁HEAD裡面已經申明是GB2312了,手動修改瀏覽器編碼為GB2312後頁面顯示正常。產生原因是伺服器Apache設定了伺服器全局的默認編碼,在httpd.conf裡面加了AddDefaultCharset UTF-8。這時候伺服器會首先發送HTTP頭給瀏覽器,其優先順序比頁面里申明編碼高,自然瀏覽器就識別錯了。解決辦法有2個,請管理員在配置文件自己的虛機里加上一條AddDefaultCharset GB2312來覆蓋全局配置,或者在自己目錄的.htaccess里配置。
⑥ php中urldecode()和urlencode()起什麼作用啊
urlencode()編碼:對字元串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號(+)。
urldecode()解碼:還原 URL 編碼字元串。
示例:
<?php
header("Content-Type:text/html; charset=utf-8");
//對參數值進行編碼
$parm=urlencode("演示php-mysql");
//拼接url
$url="decode.php?par=".$parm;
?>
<a href="<?php echo $url;?>">urlencode演示</a>
點擊連接後地址欄中漢字被編碼了:
http://localhost/decode.php?par=%E6%BC%94%E7%A4%BAphp-mysql
------------------------------------------------------------------------
//decode.php
<?php
//獲取參數值
$parValue=$_GET['par'];
//解碼
echo urldecode($parValue);
//運行結果:演示php-mysql
?>
⑦ PHP函數urlencode和urldecode的問題。
很明顯,這個編碼函數有另外一個參數。就是指定編碼方式的。
如果你安裝utf-8編碼進行編碼的話,就和原來的不一樣。
當你換成gb2312的時候就一樣了。
因為選擇的默認編碼方式不同,所以會出現不同的結果。