URLEncode: Web ページ URL 内の漢字のエンコードおよび変換方法を指します。最も一般的なものは、Baidu や Google などの検索エンジンに中国語のクエリが入力されると、エンコードされた Web ページ URL が生成されます。
URLEncode には通常 2 つの方法があり、1 つは GB2312 に基づく従来のエンコード (Baidu、Yisou などで使用)、もう 1 つは UTF-8 エンコード (Google、Yahoo などで使用) に基づいています。
このツールは、エンコードとデコードの 2 つのメソッドを実装します:
GB2312 のエンコード -> %D6%D0%CE%C4
UTF-8 のエンコード -> %B8 %AD%E6%96%87
URLEncode in HTML:
GB2312 としてエンコードされた HTML ファイル内: http://s.jb51.net/中文.rar -> ブラウザは自動的に -> に変換します。 //s.jb51.net/%D6%D0%CE%C4.rar
注: Firefox はデフォルトで URL を UTF-8 エンコードで送信するため、GB2312 エンコードの中国語 URL をサポートしていませんが、ftp:/ / プロトコルは機能します。試してみましたが、これは Firefox のバグだと思います。
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"; //中文-_. ?>
「-_.」を除くすべての非英数字文字は、パーセント記号「%」とそれに続く 2 桁の 16 進数に置き換えられます。
urlencode と rawurlencode の違い: urlencode はスペースをプラス記号「+」としてエンコードし、rawurlencode はスペースをプラス記号「%20」としてエンコードします。
UTF-8 エンコードを使用する場合は、2 つの方法があります:
1. ファイルを UTF-8 ファイルとして保存し、urlencode または rawurlencode を直接使用します。
2. 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 ?>
例: JavaScript での
<?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 ?>
URLEncode:
例: %E4%B8%AD%E6%96%87-_.%20%E4%B8%AD% E6 %96%87-_.%20
encodeURI は、「:」、「/」、「;」、「?」、「@」およびその他の特殊文字をエンコードしません。
以上、PHP の urlencode 関数を使用した URL エンコードの詳細な説明を、urlencode の内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。