PHP中urlencode()函式進行URL編碼詳解
URLEncode:是指標對網頁url中的中文字元的一種編碼轉化方式,最常見的就是Baidu、Google等搜尋引擎中輸入中文查詢時候,生成經過Encode過的網頁URL。
URLEncode的方式一般有兩種,一種是傳統的基於GB2312的Encode(Baidu、Yisou等使用),另一種是基於UTF-8的Encode(Google、Yahoo等使用)。
本工具分別實現兩種方式的Encode與Decode:
中文 -> GB2312的Encode -> %D6%D0%CE%C4
中文 -> UTF-8的Encode -> %E4%B8%AD%E6%96%87
HTML中的URLEncode:
編碼為GB2312的html檔案中:http://s.jb51.net/中文.rar -> 瀏覽器自動轉換為 -> http://s.jb51.net/%D6%D0%CE%C4.rar
注意:Firefox對GB2312的Encode的中文URL支援不好,因為它預設是UTF-8編碼傳送URL的,但是ftp://協議可以,我試過了,我認為這應該算是Firefox一個bug。
編碼為UTF-8的html檔案中:http://s.jb51.net/中文.rar -> 瀏覽器自動轉換為 -> http://s.jb51.net/%E4%B8%AD%E6%96%87.rar
PHP中的URLEncode:
<?php //GB2312的Encode echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+ echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20 echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. ?>
除了“-_.”之外的所有非字母數字字元都將被替換成百分號“%”後跟兩位十六進位制數。
urlencode和rawurlencode的區別:urlencode將空格編碼為加號“+”,rawurlencode將空格編碼為加號“%20”。
如果要使用UTF-8的Encode,有兩種方法:
一、將檔案存為UTF-8檔案,直接使用urlencode、rawurlencode即可。
二、使用mb_convert_encoding函式:
<?php $url = 'http://s.jb51.net/中文.rar'; echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; //http%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar ?>
例項:
<?php function parseurl($url="") { $url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8')); $a = array("%3A", "%2F", "%40"); $b = array(":", "/", "@"); $url = str_replace($a, $b, $url); return $url; } $url="ftp://ud03:password@s.jb51.net/中文/中文.rar"; echo parseurl($url); //ftp://ud03:password@s.jb51.net/%D6%D0%CE%C4/%D6%D0%CE%C4.rar ?>
JavaScript中的URLEncode:
如:%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20
encodeURI不對下列字元進行編碼:“:”、“/”、“;”、“?”、“@”等特殊字元。
相關文章
- 【基礎進階】URL詳解與URL編碼
- URL與URL編碼詳解
- Python urlencode 編碼和url拼接Python
- js裡對URL進行編碼、解碼JS
- js中對URL進行轉碼與解碼JS
- python中的urlencode和urldecode 【中文和url編碼轉換】Python
- 使用javascript如何給url進行編碼JavaScript
- PHP BC Math 函式詳解PHP函式
- PHP中debug_backtrace函式詳解PHP函式
- PHP函式處理函式例項詳解PHP函式
- 學習PHP中的URL相關操作函式PHP函式
- php中var_dump()函式的詳解說明PHP函式
- PHP閉包函式使用詳解PHP函式
- django中的url函式Django函式
- Javascript編碼解碼URLJavaScript
- PHP函式之parse_str()和parse_url()函式PHP函式
- Oracle單行函式詳解Oracle函式
- JS、C#中URL編碼解碼問題JSC#
- Web端進行PHP程式碼函式覆蓋率測試的解決方案WebPHP函式
- TypeScript中的函式詳解TypeScript函式
- Oracle中pivot函式詳解Oracle函式
- URL編碼與解碼原理
- PHP 查詢、擷取字串函式詳解PHP字串函式
- PHP類和物件函式例項詳解PHP物件函式
- SqlServer中將字串轉utf-8的函式、支援中文的UrlEncode函式SQLServer字串函式
- MySQL中count(*)函式原理詳解MySql函式
- linux中fork()函式詳解Linux函式
- Python中的函式詳解Python函式
- Python中Numpy函式詳解Python函式
- PL/SQL單行函式和組函式詳解(轉)SQL函式
- 詳解javascript立即執行函式表示式(IIFE)JavaScript函式
- 詳解 JS 中 new 呼叫函式原理JS函式
- python 中求和函式 sum詳解Python函式
- PHP安全的URL字串base64編碼和解碼PHP字串
- php禁用函式設定及檢視方法詳解PHP函式
- PHP快取技術:memcache函式詳解之一PHP快取函式
- php中的extract函式PHP函式
- PHP中的字串函式PHP字串函式