ホームページ >バックエンド開発 >PHPチュートリアル >URL デコード問題の解決策_PHP チュートリアル
Python の urllib ライブラリと js の encodeURIComponent をテストした後、それらは置き換えられません。スペースエンコードも「%20」に置き換えられます。 Python はスペース -> プラス記号を処理するために urllib.quote_plus、urlib.unquote_plus を提供しますが、これは合理的だと思われます。
RFC 3986 を確認してください: 次の段落があります
スキーム名は、文字で始まり、その後に文字、数字、プラス ("+")、ピリオド (".") などの任意の組み合わせが続く一連の文字で構成されます。ハイフン ("-")
RFC 2396 には次の段落があります
プラス "+"、ドル記号 "$"、およびカンマ "," 文字は、「予約済み」セット内の文字として扱われるため追加されました。クエリ コンポーネント内で予約されている
は、プラス記号がすでに URL の予約語であり、エスケープする必要がないことを意味します。
次に、HTML4 ドキュメントのプラス記号のエスケープがあります:
application/x-www-form-urlencoded
このコンテンツ タイプで送信されたフォームは次のようにエンコードされる必要があります:
コントロールの名前と値はエスケープされます。スペース文字は `+' に置き換えられ、その後予約文字が続きます....
content-type が application/x-www-form-urlencoded の場合にのみ + がエスケープされることを宣言します。
PHP ドキュメントをもう一度調べたところ、
rawurlencode() - RFC 3986 に従った URL エンコードがあることがわかりました
つまり、PHP は標準を実装するために rawurlencode と rawurldecode を実装しました。 。 。 。
元に戻すことはできませんか? 結局のところ、ほとんどの人は urlencode を使用できるはずです。 phpは本当に面倒です。 。 。 。