一,FireFox瀏覽器編碼中文字符

在Firefox瀏覽器 " /> hdxxxx58丝袜连裤袜,色女仆影院,国产精品无码亚洲精品

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php urlencode()與urldecode()函數字符編碼原理詳解

其原理就是把中文字符轉換為十六進制并按某種規則進行字符串組合,實現字符的編碼與解編碼,保證URL數據傳遞過程中字符的完整性和兼容性,主要討論中文字符的編碼情況。

一,FireFox瀏覽器編碼中文字符

在Firefox瀏覽器下如果輸入中文字符,將會自動實現URL編碼,如下

按下Enter鍵前
<aphp-interNET-url-encode-before src="/d/file/itjie/phpjishu/2014-10-22/990571f9b0a941d6ff001fd67a3373e6.png">
按下Enter鍵后
<aphp-interNET-url-encode src="/d/file/itjie/phpjishu/2014-10-22/946f0d07f1e2a8a22a7d16fac73b3a74.png">

二,urlencode()函數原理

urlencode()函數用于編碼URL字符串,這里主要討論中文字符的編碼情況,

實例如下
復制代碼 代碼如下:
echo urlencode('不要迷戀哥');//輸出:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

urlencode()函數原理就是首先把中文字符轉換為十六進制,然后在每個字符前面加一個標識符%,了解了這個原理,可以實現自定義的URL編碼函數,代碼如下
復制代碼 代碼如下:
$string = "不要迷戀哥";
$length = strlen($string);
echo $string;
$result = array();
//十進制
for($i=0;$i<$length;$i++){
if(ord($string[$i])>127){
$result[] = ord($string[$i]).' '.ord($string[++$i]);
}
}
var_dump($result);
//十六進制
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = "%".dechex($dec[0])." "."%".dechex($dec[1]);
}
var_dump($strings);

<aphp-self-urlencode src="/d/file/itjie/phpjishu/2014-10-22/4ced1d46ea89a475a782eb48608ad4f3.png">

上面代碼在[php實現中文字符進制轉換原理分析]一文中中文字符轉十六進制原理分析部分有詳細討論,通過獲取漢字的各個字符再轉換為十六進制,同時在每個字符前面加上一個特殊的標識符%,就實現了urlencode()函數的功能,輸出結果如下
然后對輸出的結果與直接使用urlencode()編碼的字符進行比較,如上:%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7

通過上面實例可知,使用urlencode()函數編碼中文字符實質上就是把字符轉換為十六進制再在第個字符左邊加上一個特殊的標識符%

三,urldecode()函數原理

使用urldecode()函數解碼已編碼的 URL 字符串,實例如下

echo urldecode('%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7');//輸出:不要迷戀哥
urldecode()函數與urlencode()函數原理相反,用于解碼已編碼的 URL 字符串,其原理就是把十六進制字符串轉換為中文字符,結合上面實例,同樣可實現自定義函數解碼字符串
復制代碼 代碼如下:
$string = '%B2%BB%D2%AA%C3%D4%C1%B5%B8%E7';
$length = strlen($string);
$hexs = array();
for($i=0;$i<$length;$i++){
if($string[$i] == '%'){
$hexs[] = $string[++$i].$string[++$i];
}
}
$num = count($hexs);
for($i=0;$i<$num;$i++){
echo chr(hexdec($hexs[$i])).chr(hexdec($hexs[++$i]));
}

上面實例代碼首先按字符串的規則取出各個字符的十六進制,然后使用hexdec()函數把十六進制轉換為十進制,然后再使用chr()函數把十進制轉換為字符,實現十六進制轉換為字符。輸出結果如下

<aphp-self-urldecode src="/d/file/itjie/phpjishu/2014-10-22/f48c2b3d0c0f28fa114f2bcaaeffd354.png">

四,urldecode()與urlencode()函數說明

urlencode
(php 3, php 4, php 5)
urlencode -- 編碼 URL 字符串
說明
string urlencode ( string str )
返回字符串,此字符串中除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 數據的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由于歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同。此函數便于將字符串編碼并將其用于 URL 的請求部分,同時它還便于將變量傳遞給

urldecode
(php 3, php 4, php 5)
urldecode -- 解碼已編碼的 URL 字符串
說明
string urldecode ( string str )
解碼給出的已編碼字符串中的任何 %##。返回解碼后的字符串。

五,參考資源
urlencode()說明
urldecode()說明

php技術php urlencode()與urldecode()函數字符編碼原理詳解,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 成年黄网站免费大全毛片 | 娇妻玩4P被三个男人伺候电影 | 国产女人与黑人在线播放 | 国产成人免费网站在线观看 | BL文库好大粗黑强强肉NP | 免费无码国产欧美久久18 | 被送到黑人性奴俱乐部 | 婷婷五月久久精品国产亚洲 | 亚洲AV精品无码国产一区 | 国内精品免费久久影院 | 国产在线精彩亚洲久久 | 国产精品高清在线观看地址 | 久久99国产综合精品AV蜜桃 | 国产成人在线视频网站 | 久久女婷五月综合色啪 | 不用播放器的黄 | 久久久久国产精品美女毛片 | 熟女啪啪白浆嗷嗷叫 | 成人免费看片45分钟 | 国产精品资源网站在线观看 | 丝瓜影院观看免费高清国际观察 | 亚洲午夜久久久精品影院 | 约艺术院校96年清纯白嫩 | 性做久久久久久久久浪潮 | 亚洲精品成人 | 最近中文字幕完整版免费高清 | 久久精品中文騷妇女内射 | 先锋影音 av | 成人国产亚洲欧美成人综合网 | aaa在线观看视频高清视频 | 久久伦理影院 | 中国老太性色xxxxxhd | 葵司中文第一次大战黑人 | 亚洲精品午夜久久久伊人 | 亚洲熟妇无码乱子AV电影 | 《乳色吐息》无删减版在线观看 | 无码人妻视频又大又粗欧美 | 亚洲日本欧美产综合在线 | 一个人免费完整在线观看影院 | 成人啪啪色婷婷久色社区 | 国产偷啪自怕网 |