回答:
安全な文字は、a〜z、A〜Z、0〜9、および_-(アンダースコアとマイナス)です。これらは、パラメータに使用される予約文字に加えてです。
他のキャラクターはある程度問題を起こすでしょう。例:1つのパラメーターが配列の場合、?param=array[content]
つまり、角かっこでエンコードされたURLが表示されます。
しかし、問題は見苦しいだけではなく、より安全な文字の横にあるキャラクターを含むjpgがあるとしましょう。多くの場合、ブラウザーは404を取得してダウンロードできません。これは古いブラウザーと一部のモバイルブラウザーの問題です。
これをテストするには?
私は14000通のメールが入った受信トレイを持っています。
次の文字は、URLのパスコンポーネントで特別な意味を持ちます(パスコンポーネントは「?」の前のすべてです)。
";" | "/" | "?"
これらに加えて、次の文字はURLのクエリ部分で特別な意味を持ちます(「?」の後のすべて)。したがって、「?」の後にある場合 それらをエスケープする必要があります:
":" | "@" | "&" | "=" | "+" | "$" | ","
ここでの答えは良いですが、言及する価値があると思うもう1つの例外があります-英語以外の文字。参照ここでは、このSFの質問を、彼らが正しくDNSでエンコードされている場合は、(日本語Españolのように)ñなどの文字は、完全に合法です。
DNS内でPunycodeを使用して最新のブラウザで解決する必要があります(españolのエントリはxn--espaol-zwa
)が、これらは非英語圏のスピーカーでも簡単に入力できるため、ドメイン名で使用しても完全に安全になりました。