Index: /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 5102)
+++ /trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java	(revision 5103)
@@ -4,4 +4,6 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.text.MessageFormat;
 import java.util.HashMap;
@@ -142,24 +144,29 @@
     /**
      * Parse the request parameters as key=value pairs.
-     * The result will be stored in this.args.
+     * The result will be stored in {@code this.args}.
      *
      * Can be overridden by subclass.
      */
     protected void parseArgs() {
-        HashMap<String, String> args = new HashMap<String, String>();
-        if (this.request.indexOf('?') != -1) {
-            String query = this.request.substring(this.request.indexOf('?') + 1);
-            if (query.indexOf('#') != -1) {
-                query = query.substring(0, query.indexOf('#'));
-            }
-            String[] params = query.split("&", -1);
-            for (String param : params) {
-                int eq = param.indexOf('=');
-                if (eq != -1) {
-                    args.put(param.substring(0, eq), param.substring(eq + 1));
+        try {
+            String req = URLDecoder.decode(this.request, "UTF-8");
+            HashMap<String, String> args = new HashMap<String, String>();
+            if (req.indexOf('?') != -1) {
+                String query = req.substring(req.indexOf('?') + 1);
+                if (query.indexOf('#') != -1) {
+                    query = query.substring(0, query.indexOf('#'));
                 }
-            }
-        }
-        this.args = args;
+                String[] params = query.split("&", -1);
+                for (String param : params) {
+                    int eq = param.indexOf('=');
+                    if (eq != -1) {
+                        args.put(param.substring(0, eq), param.substring(eq + 1));
+                    }
+                }
+            }
+            this.args = args;
+        } catch (UnsupportedEncodingException ex) {
+            throw new IllegalStateException(ex);
+        }
     }
 
