Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java	(revision 16605)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java	(revision 16606)
@@ -74,5 +74,5 @@
             if (tagTable.getSelectedRowCount() == 1) {
                 final int row = tagTable.getSelectedRow();
-                final String key = Utils.encodeUrl(tagKeySupplier.apply(row)).replaceAll("\\+", "%20");
+                final String key = tagKeySupplier.apply(row);
                 Map<String, Integer> values = tagValuesSupplier.apply(row);
                 String value = values.size() == 1 ? values.keySet().iterator().next() : null;
@@ -112,8 +112,12 @@
     public String getTaginfoUrlForTag(Tag tag) {
         if (tag.getValue().isEmpty()) {
-            return taginfoUrl + "/keys/" + tag.getKey();
+            return taginfoUrl + "/keys/" + encodeKeyValue(tag.getKey());
         } else {
-            return taginfoUrl + "/tags/" + tag.getKey() + '=' + Utils.encodeUrl(tag.getValue()).replaceAll("\\+", "%20");
+            return taginfoUrl + "/tags/" + encodeKeyValue(tag.getKey()) + '=' + encodeKeyValue(tag.getValue());
         }
+    }
+
+    private static String encodeKeyValue(String string) {
+        return Utils.encodeUrl(string).replaceAll("\\+", "%20");
     }
 
