There are generally two kinds of urlencode, one is the traditional based on GB2312 encode (Baidu, Yisou, etc.), the other is based on UTF-8 encode (Google, Yahoo and other uses).
This tool implements the encode and decode of two different ways:
Encode->%d6%d0%ce%c4 of Chinese-> GB2312
Encode->%e4%b8%ad%e6%96%87 of Chinese-> UTF-8
UrlEncode in HTML:
In an HTML file encoded as GB2312: http://s.jb51.net/Chinese. rar-> Browser automatically converts to-> Http://s.jb51.net/%D6%D0%CE%C4.rar
Note: Firefox on GB2312 's encode Chinese URL support is not good, because it is the default is UTF-8 code to send the URL, but the ftp://protocol can, I tried, I think this should be a Firefox bug.
In an HTML file encoded as UTF-8: http://s.jb51.net/Chinese. rar-> Browser automatically converts to-> Http://s.jb51.net/%E4%B8%AD%E6%96%87.rar
UrlEncode in PHP:
Copy Code code as follows:
<?php
GB2312 's Encode
Echo UrlEncode ("Chinese-_."). " \ n "; %d6%d0%ce%c4-_.+
Echo UrlDecode ("%d6%d0%ce%c4-_."). " \ n "; Chinese-_.
Echo Rawurlencode ("Chinese-_."). " \ n "; %d6%d0%ce%c4-_.%20
Echo Rawurldecode ("%d6%d0%ce%c4-_."). " \ n "; Chinese-_.
?>
Except "-_." All non-alphanumeric characters are replaced with a percent semicolon "%" followed by a two-digit hexadecimal number.
The difference between UrlEncode and Rawurlencode: UrlEncode encodes the space as a plus "+", rawurlencode the space as the plus sign "%20".
If you want to use the UTF-8 encode, there are two ways:
First, the file as a UTF-8 file, directly using UrlEncode, Rawurlencode can be.
Second, using the Mb_convert_encoding function:
Copy Code code as follows:
<?php
$url = ' http://s.jb51.net/Chinese. 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
?>
Instance:
Copy Code code as follows:
<?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/Chinese/Chinese. rar";
echo parseURL ($url);
Ftp://ud03:password@s.jb51.net/%d6%d0%ce%c4/%d6%d0%ce%c4.rar
?>
UrlEncode in javascript:
such as:%e4%b8%ad%e6%96%87-_.%20%e4%b8%ad%e6%96%87-_.%20
encodeURI does not encode the following characters: ":", "/", ";", "?", "@" and other special characters.
such as: Http://s.jb51.net/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar