非字母數(shù)字字符都將被替換成百分號(hào)“%”后跟兩位十六數(shù)
2021-01-31
URLEncode:指網(wǎng)頁(yè)URL中漢字的編碼轉(zhuǎn)換方法。最常見(jiàn)的方法是在百度和Google等搜索引擎中輸入中文查詢時(shí)生成編碼的網(wǎng)頁(yè)URL。
URLEncode通常有兩種方式,一種是傳統(tǒng)的基于GB2312的編碼(由百度,Yisou等使用),另一種是基于UTF-8的編碼(由Google,Yahoo等使用)。 )。
URLdecode:用于將url編碼的字符串恢復(fù)為未編碼的外觀。
此工具通過(guò)兩種方式實(shí)現(xiàn)編碼和解碼:
中文-> GB2312的編碼->%D6%D0%CE%C4
中文-> UTF-8編碼->%E4%B8%AD%E6%96%87
HTML中的URLEncode:
在編碼為GB2312的html文件中:Chinese.rar->瀏覽器自動(dòng)轉(zhuǎn)換為->%D6%D0%CE%C4.rar
注意:Firefox不支持GB2312編碼的中文URL,因?yàn)樗J(rèn)情況下使用UTF-8發(fā)送URL,但是ftp://協(xié)議可以。我嘗試過(guò)php url編碼轉(zhuǎn)換,我認(rèn)為這應(yīng)該被視為Firefox中的錯(cuò)誤。
在編碼為UTF-8的html文件中:Chinese.rar->瀏覽器自動(dòng)轉(zhuǎn)換為->%E4%B8%AD%E6%96%87.rar
PHP中的URLEncode:
復(fù)制代碼,代碼如下:
1 php 2 //GB2312的Encode 3 echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+ 4 echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 5 echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20 6 echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 7 ?>
除“ -_”外的所有非字母數(shù)字字符。將被替換為百分號(hào)“%”,后跟兩個(gè)十六進(jìn)制數(shù)字。
urlencode和rawurlencode之間的區(qū)別:urlencode將空格編碼為加號(hào)“ +”php url編碼轉(zhuǎn)換,而rawurlencode將空格編碼為加號(hào)“%20”。
如果要使用UTF-8編碼,有兩種方法:
一、將文件另存為UTF-8文件,并直接使用urlencode和rawurlencode。
二、使用mb_convert_encoding函數(shù):
復(fù)制代碼,代碼如下:
1 php 2 $url = 'http://s.jb51.net/中文.rar'; 3 echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; 4 echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; 5 //http%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar 6 ?>
示例:
復(fù)制代碼,代碼如下:
1 php 2 function parseurl($url="") 3 { 4 $url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8')); 5 $a = array("%3A", "%2F", "%40"); 6 $b = array(":", "/", "@"); 7 $url = str_replace($a, $b, $url); 8 return $url; 9 } 10 $url="ftp://ud03:password@s.jb51.net/中文/中文.rar"; 11 echo parseurl($url); 12 //ftp://ud03:password@s.jb51.net/%D6%D0%CE%C4/%D6%D0%CE%C4.rar 13 ?>
JavaScript中的URLEncode:
例如:%E4%B8%AD%E6%96%87 -_。%20%E4%B8%AD%E6%96%87 -_。%20
encodeURI不對(duì)以下字符進(jìn)行編碼:“:”,“ /”,“;”,“?”,“ @”和其他特殊字符。
例如:%E4%B8%AD%E6%96%87.rarhttp%3A%2F %% 2F%E4%B8%AD%E6%96%87.rar