php urlencode()関数の詳細


理解URLEncode:
URLEncode:ページurlの中の中国語の文字をエンコードする変換方式で、最も一般的なのはBaidu、Googleなどの検索エンジンに中国語の検索を入力すると、Enccodeを経由したウェブサイトのURLが生成されます.URLEncodeの方式は一般的に2つのタイプがあります.一つはUTF-8に基づくEncode(Google,Yahooなどが使います).本ツールはそれぞれ二つの方式のEnccodeとDecodeを実現します.
日本語->GB 2312のEnccode->%D 6%D 0%CE% C 4
日本語->UTF-8のEnccode->%E 4%B 8%AD% E 6%96%87
HtmlのURLEncode:
GB 2312とエンコードされたhtmlファイルには、
http://ud03.kinoko.name/日本語.rar->ブラウザが自動的に->に変換されます.http://ud03.kinoko.name/%D6%D0%CE%C4.rar
注意:FirefoxはGB 2312のEncodeの中国語のURLに対してよくサポートしていません.UTF-8コードでURLを送信していますが、ftp:/プロトコルは大丈夫です.試してみました.これはFirefoxのbugと言えると思います.
UTF-8とエンコードされたhtmlファイルには、
http://ud03.kinoko.name/日本語.rar->ブラウザが自動的に->に変換されます.http://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rar
PHPのURLEncode:

<?php
//GB2312 Encode
echo urlencode("  -_. ")."
"; //%D6%D0%CE%C4-_.+ echo urldecode("%D6%D0%CE%C4-_. ")."
"; // -_. echo rawurlencode(" -_. ")."
"; //%D6%D0%CE%C4-_.%20 echo rawurldecode("%D6%D0%CE%C4-_. ")."
"; // -_. ?>
を除きます以外のすべてのアルファベットでない数字は百分号(%)と後の二桁の十六進数に置き換えられます.
urlencodeとrawurlencodeの違い:
urlencodeはスペースをプラス記号(+)として符号化します.
rawurlencodeはスペースをプラス記号として符号化します(%20)
UTF-8のEncodeを使うなら、2つの方法があります.
一、ファイルをUTF-8ファイルに保存し、urlencode、rawurlencodeを直接使用すればいいです.
二、mb_を使うconvert_.encoding関数

<?php
$url = 'http://ud03.kinoko.name/  .rar';
echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."
"; echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."
"; //http%3A%2F%2Fud03.kinoko.name%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:[email protected]/  /  .rar";
echo parseurl($url);
//ftp://ud03:[email protected]/%D6%D0%CE%C4/%D6%D0%CE%C4.rar
?>
JavaScriptの中のURLEncode:
%E 4%B 8%AD% E 6%96%87-_.%20%E 4%B 8%AD% E 6%96%87-_.%20
EncodeURIでは、「:」、「/」、「;」、「?」、「@」などの特殊文字は符号化されません.
http://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar