Ich versuche, die folgende URI zu analysieren: http://translate.google.com/#zh-CN|en|你Wie eine URI wie dies in Java analysieren
bekam aber diese Fehlermeldung:
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)
Es hat das Problem mit dem „|“ Charakter, wenn ich das "|" loswerde, verursacht das letzte chinesische Zeichen kein Problem, was ist der richtige Weg, damit umzugehen?
Meine Methode sieht wie folgt aus:
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(); }
}
Danke für die Antworten, aber BalusC Lösung nur arbeiten für eine Instanz der URL scheint, muss meine Methode mit einer beliebigen URL ich es passieren arbeiten, wie Würde es wissen, wo der Ausgangspunkt ist, um die URL in zwei Teile zu zerlegen und nur den zweiten Teil zu codieren?
FYI: 'URLEncoder' (trotz des Namens) sollte nicht verwendet werden, um URLs zu kodieren. Das Dokument sagt: _This Klasse enthält statische Methoden zum Konvertieren einer Zeichenfolge in die Anwendung/x-www-Form-urlencoded MIME-Format. Dies ist nicht das Gleiche wie die Codierung von URIs/URLs verwendet. – McDowell
Die Lösung von BalusC scheint für diese Instanz der URL zu funktionieren, aber ich muss die Methode für alle URLs verwenden, die ich an sie weitergebe. Woher weiß sie, von welchem Startpunkt aus der Rest der URL analysiert wird? Die URL könnte eine der folgenden Aktionen: www.yahoo.com/abc/xyz http://yahoo.com/abc/123/ yahoo.com/abc/123/... – Frank
I Ich denke, Sie müssten die URL in Teile aufteilen ... Domäne, Pfad, Abfragezeichenfolge und Fragment. Die Domain sollte nicht verschlüsselt werden. Der Pfad, den du durch Schrägstriche aufteilen musst, kodiere jeden Teil des Pfades und setze ihn dann wieder zusammen. Für die Abfragezeichenfolge müssten Sie jeden Parameternamen und -wert codieren. Sie müssten auch das Fragment kodieren. Platzieren Sie dann die URL erneut. –