Cómo analizar un URI como este en Java

Estoy tratando de analizar la siguiente URI:http: //translate.google.com/#zh-CN | en | 你

pero recibió este mensaje de error:

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)

Está teniendo problemas con el "|" personaje, si me deshago de "|", el último personaje chino no está causando ningún problema, ¿cuál es la forma correcta de manejar esto?

Mi método se parece a esto:

  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(); }
  }

Gracias por las respuestas, pero la solución de BalusC parece funcionar solo para una instancia de la url, mi método necesita trabajar con cualquier url que le pase, ¿cómo sabría dónde está el punto de partida para cortar la url en dos partes y solo codificar? la segunda parte ?

Respuestas a la pregunta(7)

Su respuesta a la pregunta