ホームページ > バックエンド開発 > PHPチュートリアル > PHP は URL エンコードの文字化けの問題を解決します

PHP は URL エンコードの文字化けの問題を解決します

WBOY
リリース: 2016-06-20 13:04:31
オリジナル
1692 人が閲覧しました

PHP は Web ページの URL エンコードとデコードの問題を解決します

PHP には、次の問題を解決するための urlencode()、urldecode()、rawurlencode()、および rawurldecode() などの関数があります。 Web ページの URL エンコードとデコード。

PHP の urlencode の概要:

urlencode は、Web ページ URL 内の中国語の文字のコーディング変換方法を指します。最も一般的なのは、Baidu や Google などの検索エンジンで中国語のクエリを入力する場合です。エンコードされた Web ページ URL を生成します。一般に、urlencoding には 2 つの方法があります。1 つは従来の GB2312 ベースのエンコード (Baidu、Yisou などで使用)、もう 1 つは utf-8 ベースのエンコード (Google、Yahoo などで使用) です。この記事では、エンコードとデコードの 2 つの方法をそれぞれ分析します。

中国語 -> GB2312 のエンコード -> %D6%D0%CE%C4

中国語のエンコード -> %E4%B8%AD%E6 %96%87

HTML の URL:

GB2312 としてエンコードされた HTML ファイル内:

http://www.scutephp.com/中文.rar -> ;ブラウザは自動的に http://www.scutephp.com/%D6%D0%CE%C4.rar

に変換します。 注: Firefox は、デフォルトで GB2312 Encode の中国語 URL をサポートしません。は URL を utf-8 エンコーディングで送信しますが、ftp:// プロトコルも使用できます。これは Firefox のバグとみなされます。

utf-8 としてエンコードされた HTML ファイル内:

http://www.scutephp.com/中文.rar -> ブラウザは自動的に http:// に変換します。 www.scutephp.com/%E4%B8%AD%E6%96%87.rar

urlencode と rawurlencode の例:

コード

<p>//GB2312的Encode</p><p>echo urlencode("中文-_. ")."\n"; <br /></p><p>//%D6%D0%CE%C4-_.+</p><p>echo urldecode("%D6%D0%CE%C4-_. ")."\n"; <br /></p><p>//中文-_.<br /></p><p>echo rawurlencode("中文-_. ")."\n";</p><p> //%D6%D0%CE%C4-_.%</p><p>05echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; <br /></p><p>//中文-_.</p>
ログイン後にコピー

-_ を除くすべての非英数字は、パーセント記号 (%) とそれに続く 2 つの 16 進数に置き換えられます。

urlencode と rawurlencode の違い:

urlencode はスペースをプラス記号 (+) としてエンコードします

rawurlencode はスペースをプラス記号 (%20) としてエンコードします

私の最後のバージョンの txt ファイル スプリッター (オンライン) コードでは、この問題は見つかりませんでした。その結果、スペースを含むすべての URL が解析できず、ファイルのセグメンテーションが不十分になりました。ダウンロードされる。 rawurlencode() 関数を使用すると、この問題が解決されます。

utf-8 エンコードを使用する場合は、2 つの方法があります:

1. ファイルを utf-8 ファイルとして保存し、urlencode または rawurlencode を直接使用します。

2. mb_convert_encoding 関数を使用します。

コード

<p>$url = 'http://www.phpernote.com/中文.rar';</p><p>echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";</p><p>echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";</p><p>//http%3A%2F%2Fwww.huikaiche.com%2F%E4%B8%AD%E6%96%87.rar</p>
ログイン後にコピー

応用例:

コード

<p>function parseurl($url=""){</p><p>    $url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8'));</p><p>    $a = array("%3A", "%2F", "%40");</p><p>    $b = array(":", "/", "@");</p><p>    $url = str_replace($a, $b, $url);</p><p>    return $url;</p><p>}</p><p>$url="ftp://yongfu:password@www.huikaiche.com/中文/中文.rar";</p><p>echo parseurl($url);</p><p>//ftp://yongfu:password@www.huikaiche.com/%D6%D0%CE%C4/%D6%D0%CE%C4.rar</p>
ログイン後にコピー



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート