1

私の問題はこれです.Javaでは、ユーザーを他の場所にリダイレクトする機会があり、他の場所ではユーザー定義が可能です。コードは次のようになります。

response.sendRedirect(redirectURL). 私の焦点は、変数 redirectURL で表される文字列です。私の理解では、response.setCharacterEncoding を指定すると、sendRedirect の内容には影響せず、応答ライターに書き込まれる内容に影響します。コネクタに URIEncoding= を追加することにより、Tomcat ベースのコンテナーで、URL のパスが簡体字中国語、日本語、または非 ASCII 文字である場合を処理する必要があるのは合理的に思えますが、そうではありません。私の質問の一部は、その理由です。

ここでは、URLEncode を使用することを示す多くの応答がありました。ただし、問題 4571346 では 、Java で特殊文字を回避するために URL をエンコードする方法

ウィザードは、むしろ使用すべきではないと述べています

  1. URI オブジェクトを作成する
  2. toASCIIString を介して適切な URL 文字列を作成します。

私の例のユースケースでは、このコードresponse.sendRedirect()は多数のすべての前に実行する必要がありますが、これは正常に機能します。

ますます多くのアプリケーションがグローバルに使用されるようになるにつれて、この問題が事実上、直接の HTTPResponse メソッド sendRedirect を不十分にレンダリングしていることがわかります。

アプリケーションの国際化ドメイン名を扱う RFC3490 を参照してください。RFC3490 では、2 つの操作のうちの 1 つとして toASCII が説明されており、もう 1 つは toUnicode です。

では、コネクタの URIEncoding= がこれを処理しないのはなぜですか? また、パスが国際化されている URL を処理するためのより好ましい方法はありますか? 関心の分離という意味で、この問題はアプリケーションの問題ではなく、コンテナの問題であり、そうあるべきだと私は信じています。HTML ではなく、フォームでもなく、URL そのもの以外のことでもなく、この問題について議論するためのフォーラムが提供されることを願っています。

4

0 に答える 0