Sto cercando di analizzare il seguente URI: http://translate.google.com/#zh-CN|en|你Come fare il parsing di un URI come questo in Java
ma ha ottenuto questo messaggio di errore:
java.net.URISyntaxException: Illegal character in fragment at index 34: http://translate.google.com/#zh-CN|en|你
at java.net.URI$Parser.fail(URI.java:2809)
at java.net.URI$Parser.checkChars(URI.java:2982)
at java.net.URI$Parser.parse(URI.java:3028)
Sta avendo problemi con il "|" personaggio, se mi sbarazzo del "|", l'ultimo carattere cinese non sta causando alcun problema, qual è il modo giusto per gestirlo?
Il mio metodo simile a questa:
public static void displayFileOrUrlInBrowser(String File_Or_Url)
{
try { Desktop.getDesktop().browse(new URI(File_Or_Url.replace(" ","%20").replace("^","%5E"))); }
catch (Exception e) { e.printStackTrace(); }
}
Grazie per le risposte, ma la soluzione di BalusC sembra funzionare solo per un'istanza del URL, il mio metodo ha bisogno di lavorare con qualsiasi URL passo ad esso, come Saprebbe dov'è il punto di partenza per tagliare l'url in due parti e codificare solo la seconda parte?
FYI: 'URLEncoder' (nonostante il nome) non deve essere utilizzato per codificare gli URL. Il doc dice: _Questa classe contiene metodi statici per convertire una stringa nel formato MIME application/x-www-form-urlencoded. Questo non è lo stesso della codifica usata dagli URI/URL. – McDowell
La soluzione di BalusC sembra funzionare per questa istanza dell'URL, ma ho bisogno che il metodo funzioni per tutti gli URL che ho passato, come saprebbe da quale punto di partenza analizzare il resto dell'URL? L'URL potrebbe una delle seguenti: www.yahoo.com/abc/xyz http://yahoo.com/abc/123/ yahoo.com/abc/123/... – Frank
I pensa che sarebbe necessario dividere l'URL in parti ... dominio, percorso, stringa di query e frammento. Il dominio non dovrebbe essere codificato. Il percorso, dovresti separarti dalle barre e codificare ogni parte del percorso, quindi rimetterlo insieme. Per la stringa di query, è necessario codificare ogni nome e valore di parametro. Dovresti anche codificare il frammento. Quindi, riassembla l'URL. –