IISにURLエンコードを強制しない方法を知っている人はいますか
URL エンコードする必要があります。HTTP ヘッダーで生の 'š' (\xC5\xA1) を渡すことは無効です。ブラウザはエラーを '%C5%A1' まで修正するかもしれませんが、その場合、最初に '%C5%A1' と書いた場合と結果は変わりません。
リンクに未加工の 'š' を含めること自体は問題ありません。ブラウザは、IRI 仕様に従って UTF-8 にエンコードし、URL エンコードする必要があります。ただし、これが実際に機能することを確認するには、リンクを含むページが UTF-8 でエンコードされていることを確認する必要があります。繰り返しになりますが、手動の URL エンコードがおそらく最も安全です。
UTF-8 の URL で問題はありませんでした。動作しない例にリンクできますか?
有効な HTTP ヘッダーを構成する要素の詳細が記載されているリファレンスへのリンクはありますか?
標準的には、RFC 2616 . ただし、実際には、これはやや役に立ちません。重要な一節は次のとおりです。
*TEXT の単語には、RFC 2047 の規則に従ってエンコードされた場合にのみ、ISO-8859-1 以外の文字セットの文字が含まれる場合があります。
問題は、RFC 2047 の規則によると、'atoms' だけが 2047 'encoded-word' に対応できることです。TEXT は、ほとんどの場合、HTTP に含まれていますが、アトムであるとは考えられません。とにかく、RFC 2047 は明示的に RFC 822 ファミリ フォーマット用に設計されており、HTTP は 822 フォーマットによく似ていますが、実際には互換性がありません。微妙ではあるが重要な違いがある独自の基本的な文法があります。HTTP 仕様の RFC 2047 への参照は、一貫した方法でそれを解釈する方法についての手がかりを与えません。私が知っている限り、それは誤りです。
いずれにせよ、実際のブラウザは、HTTP 処理のどこでも RFC 2047 エンコーディングを解釈する方法を見つけようとしません。非 ASCII バイトは RFC 2616 で ISO-8859-1 に定義されていますが、実際にはブラウザは HTTP を処理する際にさまざまな場所で他の多くのエンコーディング (UTF-8 など、またはシステムのデフォルト エンコーディングが何であれ) を使用できます。ヘッダー。したがって、8859-1 文字セットに頼るのは安全ではありません! とにかく、それがあなたに「š」を与えたというわけではありません...