在鏈接中,我有{
和}
字符。在chrome/ff(也就是?)中,當我點擊該鏈接時,它將用%7B
和}
替換{
,用%7D
替換{
。不幸的是,在歌劇中它不是。如果我的URLEncoder.encode
的鏈接,然後%7B
在其他瀏覽器中變成%257B
(那麼我得到一個404 @資源)。所以當我點擊歌劇中的鏈接時,我得到了java.lang.IllegalArgumentException: Illegal character in path at index
。我很困惑:java.lang.IllegalArgumentException:索引處的路徑中的非法字符
- 爲什麼不對歌劇編碼
{
和}
? - 爲什麼拋出異常?爲什麼不直接編碼URL並繼續?
- 如何解決這個問題,而不會破壞其他瀏覽器中的鏈接(附加編碼)?
編輯:我們使用jersey,因爲它的堆棧跟蹤說:
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)