1. ホーム
  2. urlencode

[解決済み] スペースはいつプラス(+)または%20にエンコードされるべきですか?重複

2022-03-17 05:47:38

質問

時々、スペースがURLエンコードされて + 記号に、またある時は %20 . この違いは何でしょうか、またなぜこのようなことが起こるのでしょうか。

どのように解決するのですか?

+ はスペースを意味します。 のみ application/x-www-form-urlencoded のコンテンツ(URLのクエリ部分など)に適用されます。

http://www.example.com/path/foo+bar/path?query+name=query+value

このURLの場合、パラメータ名は query name にはスペースが入り、値は query value をスペースで囲んでいますが、パスの中のフォルダ名は文字通り foo+bar , ではなく foo bar .

%20 は、これらの文脈のいずれにおいても、スペースをエンコードする有効な方法です。したがって、URLの一部に含めるために文字列をURLエンコードする必要がある場合は、常にスペースを %20 で、プラスは %2B . これは、例えば encodeURIComponent() はJavaScriptで行う。残念ながら urlencode はPHPで行う( 生urlencode の方が安全です)。

参照

HTML 4.01仕様 application/x-www-form-urlencoded