0

リンクには{との}文字があります。chrome / ff(およびie?)では、そのリンクをクリックすると、およびに置き換え{られます。残念ながら、オペラではそうではありません。リンクすると、他のブラウザになります(したがって、そのリソースで404を取得します)。ですから、オペラのリンクをクリックすると、が表示されます。私は混乱しています:%7B}%7DURLEncoder.encode%7B%257Bjava.lang.IllegalArgumentException: Illegal character in path at index

  1. なぜオペラはエンコードしないの{です}か?
  2. なぜ例外をスローするのですか?URLをエンコードして続行しないのはなぜですか?
  3. 他のブラウザでリンク(追加のエンコーディングを使用)を壊さずにこれを解決するにはどうすればよいですか?

編集:スタックトレースにあるように、私たちはジャージを使用しています:

java.lang.IllegalArgumentException: Illegal character in path at index
    java.net.URI.create(URI.java:859)
    javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:95)
    com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:879)
    com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:843)
    com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:804)
4

1 に答える 1

0

紛らわしいことに(つまり、名前が間違っている)URLEncoderは、URL自体をエンコードするためではなく、データをパラメーターとして渡すためのものです。

org.apache.commons.httpclient.util.URIUtil.encodePathを使用していますが、これは(1.4以降)なくなったようです。代わりにjava.net.URIを使用すること をお勧めします。commonsからURIUtil.encodePathに何が起こったのか- httpclient-3.1?

これも見てください:JavaでのHTTPURLアドレスエンコーディング

于 2012-09-14T16:15:39.393 に答える