diff -r 3485327d3080 -r 70d15cf323ba launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sun Dec 23 23:30:06 2012 +0100 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Tue Dec 25 14:07:02 2012 +0100 @@ -149,7 +149,7 @@ if (id != null && value != null) { LOG.log(Level.INFO, "Received result for case {0} = {1}", new Object[]{id, value}); - value = value.replace("%20", " "); + value = decodeURL(value); cases.get(Integer.parseInt(id)).result(value, null); } @@ -253,6 +253,17 @@ } } + private static String decodeURL(String s) { + for (;;) { + int pos = s.indexOf('%'); + if (pos == -1) { + return s; + } + int i = Integer.parseInt(s.substring(pos + 1, pos + 2), 16); + s = s.substring(0, pos) + (char)i + s.substring(pos + 2); + } + } + private void stopServerAndBrwsr(HttpServer server, Object[] brwsr) throws IOException, InterruptedException { Process process = (Process)brwsr[0];