ホームページ  >  記事  >  php教程  >  URLデコードの問題の解決策

URLデコードの問題の解決策

WBOY
WBOYオリジナル
2016-06-13 12:03:161186ブラウズ

Python の urllib ライブラリと js の encodeURIComponent をテストした後、それらは置き換えられません。スペースエンコードも「 」に置き換えられます。 Python はスペース -> プラス記号を処理するために urllib.quote_plus、urlib.unquote_plus を提供しますが、これは合理的だと思われます。

RFC 3986 を確認しました。次の段落があります。

スキーム名は、文字で始まり、その後に文字、数字、プラス (" ") の任意の組み合わせが続く一連の文字で構成されます。ピリオド (".")、またはハイフン ("-")。
RFC 2396 には次の段落があります。

プラス文字 " "、ドル記号 "$"、およびカンマ "," 文字が追加されました。 「予約済み」セット内のそれらは、クエリ コンポーネント内で予約済みとして扱われるため、プラス記号はすでに URL の予約語であり、エスケープする必要がないことを意味します。

HTML4 ドキュメントにはプラス記号のエスケープがあります:

application/x-www-form-urlencoded
このコンテンツ タイプで送信されたフォームは次のようにエンコードされる必要があります。
コントロールの名前と値はエスケープされます。スペース文字は ` ' に置き換えられ、次に予約文字が続きます。
コンテンツ タイプが application/x-www の場合にのみ変換が行われることを宣言します。 -form-urlencoded 正義。

もう一度 php ドキュメントを調べてみると、

rawurlencode() - RFC 3986 に準拠した URL エンコードを見つけました。


つまり、php は rawurlencode を再度実行しましたそして rawurldecode は標準を実装します。 。 。 。

元に戻すことはできませんか? 結局のところ、ほとんどの人は urlencode を使用できるはずです。 phpは本当に面倒です。 。 。 。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。