2012-09-14 68 views
0

在鏈接中,我有{}字符。在chrome/ff(也就是?)中,當我點擊該鏈接時,它將用%7B}替換{,用%7D替換{。不幸的是,在歌劇中它不是。如果我的URLEncoder.encode的鏈接,然後%7B在其他瀏覽器中變成%257B(那麼我得到一個404 @資源)。所以當我點擊歌劇中的鏈接時,我得到了java.lang.IllegalArgumentException: Illegal character in path at index。我很困惑:java.lang.IllegalArgumentException:索引處的路徑中的非法字符

  1. 爲什麼不對歌劇編碼{}
  2. 爲什麼拋出異常?爲什麼不直接編碼URL並繼續?
  3. 如何解決這個問題,而不會破壞其他瀏覽器中的鏈接(附加編碼)?

編輯:我們使用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) 

回答

相關問題