11

URL クエリ文字列で使用できる文字は?

クエリ文字列は特定の形式に従う必要がありますか?

4

3 に答える 3

11

https://www.rfc-editor.org/rfc/rfc3986ごと

セクション 2.2 予約文字では、次の文字がリストされています。

予約済み = gen-delims / sub-delims

gen-delims = ":" / "/" / "?" /「#」/「[」/「]」/「@」</p>

サブデリム = 「!」/「$」/「&」/「'」/「(」/「)」/「*」/「+」/「,」/「;」/「=」</p>

仕様は次のように述べています。

URI コンポーネントのデータが区切り文字としての予約文字の目的と競合する場合、URI を形成する前に、競合するデータをパーセントでエンコードする必要があります。

次に、セクション 2.3 予約されていない文字には、次のものがリストされています。

未予約 = ALPHA / DIGIT / "-" / "." /「_」/「〜」</p>

于 2012-11-14T05:36:30.190 に答える
11

ウィキペディアに答えがあります: http://en.wikipedia.org/wiki/Query_string

" URL エンコーディング:一部の文字を URL の一部にすることはできません (スペースなど)。その他の一部の文字は、URL で特別な意味を持ちます。たとえば、文字 # を使用して、ドキュメント; 文字 = は、名前と値を区切るために使用されます. これらの制約を満たすために、クエリ文字列を変換する必要がある場合があります. これは、URL エンコーディングと呼ばれるスキーマを使用して行うことができます.

特に、クエリ文字列のエンコードでは、次の規則が使用されます。

  • 文字 (A ~ Z および a ~ z)、数字 (0 ~ 9)、および文字「.」、「-」、「~」、および「_」はそのまま残されます。
  • SPACE は '+' または %20 としてエンコードされます[要出典]
  • 他のすべての文字は、最初に UTF-8 (または他の指定されたエンコーディング) としてエンコードされた非 ASCII 文字を含む %FF 16 進数表現としてエンコードされます。

チルダ ("~") 文字に対応するオクテットは、多くの場合、古い URI 処理の実装によって "%7E" としてエンコードされます。「%7E」は、その解釈を変更せずに「~」に置き換えることができます。「+」としての SPACE のエンコーディングと「そのままの」文字の選択は、このエンコーディングを RFC 1738 と区別します。」

形式に関しては、クエリ文字列は名前と値のペアです。? クエリ文字列を URL から分離します。名前と値の各ペアはアンパサンド (&) で区切られ、名前 (キー) と値は等号 (=) で区切られます。例えば。http://domain.com?key=value&secondkey=secondvalue

私が提供したウィキペディア参照の構造の下で:

  • 疑問符は区切り記号として使用され、クエリ文字列の一部ではありません。
  • クエリ文字列は、一連のフィールドと値のペアで構成されています
  • 各ペア内で、フィールド名と値は等号「=」で区切られます。
  • 一連のペアは、アンパサンド '&' (または HTML に埋め込まれ、... によって生成されない URL の場合はセミコロン ';'; 以下を参照) で区切られます。
  • W3C は、すべての Web サーバーがアンパサンド セパレータに加えてセミコロン セパレータをサポートすることを推奨しています[6]。これにより、エンティティ エスケープ アンパサンドを使用せずに、HTML ドキュメント内の URL で application/x-www-form-urlencoded クエリ文字列を使用できるようになります。
于 2012-11-14T05:37:38.683 に答える