php [url=編碼[/url],可以使用 urlencode() 或者 rawurlencode(),二者的區別是前者把空格編碼為 '+',而後者把空格編碼為 '%20',注意,在編碼時應該只對部分url編碼,否則url中的冒號和反斜槓也會被轉義。
詳細解釋:
string urlencode ( string str)
例子 1. urlencode() 示例
<?php
echo '';
?>
例子 2. urlencode() 與 htmlentities() 示例
<?php
echo '';
?>
string urlencode ( string str)
返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進製制數。這是在 rfc 1738 中描述的編碼,是為了保護原義字元以免其被解釋為特殊的 url 定界符,同時保護 url 格式以免其被傳輸**(像一些郵件系統)使用字元轉換時弄亂。
[url=漢字轉碼unicode編碼函式[/url]
例如,如果你想在 ftp 的 url 中包含密碼:
例子 1. rawurlencode() 示例 1
<?php
echo '';
?>
或者,如果你想通過 url 的 path_info 構成部分去傳遞資訊:
例子 2. rawurlencode() 示例 2
<?php
echo '';
?>
在解碼時,可以使用相應的 urldecode() 和 rawurldecode(),相應地,rawurldecode() 不會把加號('+')解碼為空格,而 urldecode() 可以。
示例:string urldecode ( string str)
解碼給出的已編碼字串中的任何 %##。返回解碼後的字串。
例子 1. urldecode() example
<?php
$a = explode('&', $query_string);
$i = 0;
while ($i < count($a))
?>
string rawurldecode ( string str)
返回字串,此字串中百分號(%)後跟兩位十六進製制數的序列都將被替換成原義字元。
例子 1. rawurldecode() 示例
<?php
echo rawurldecode('foo%20bar%40baz'); // foo bar@baz
?>
但是,有一點需要注意的地方是,urldecode() 和 rawurldecode() 解碼出的字串是 utf-8格式的編碼,如果url中含有中文的話,而頁面設定又不是 utf-8 的話,則要把解碼出的字串進行轉換,才能正常顯示!
還有乙個問題,就是所獲得的 url 不是 %%nn n= 的格式,而是 %unnnn n= 的格式,這時候再使用 urldecode() 和 rawurldecode() 是無法正確解碼的,而要用下面這個函式才能正確解碼:
function utf8rawurldecode ($source)
else
} else
}return $decodedstr;
}
Lua中url的中文轉碼
local lua util function lua util.url encode str if str then str string.gsub str,n r n str string.gsub str,w function c return string.format 02x string...
關於URL轉碼問題
最近遇到這麼乙個問題,乙個是查詢亂碼 16進製制字串 另外乙個是url傳參需要對引數轉碼,因為傳的引數是一串中文字元,所以需要處理。前台轉碼倒是方便,一種情景是直接在請求傳送觸發的事件裡面直接轉碼,然後跳到後台裡面,然後在action裡面再轉碼一次。在這個過程中遇到乙個問題如 所示,前台 docum...
PHP的json encode中文被轉碼的問題
在php5.2中做json encode的時候。中文會被unicode編碼,php5.3加入了options引數,5.4以後才加入json unescaped unicode,這個引數,不需要做escape和unicode處理。所以在5.4之前都需要對中文做個處理 5.4裡面的處理 php json...