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");
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TaginfoActionTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TaginfoActionTest.java	(revision 16605)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/properties/TaginfoActionTest.java	(revision 16606)
@@ -31,4 +31,6 @@
         assertEquals("https://taginfo.openstreetmap.org/keys/railway", action.getTaginfoUrlForTag(new Tag("railway")));
         assertEquals("https://taginfo.openstreetmap.org/tags/railway=tram", action.getTaginfoUrlForTag(new Tag("railway", "tram")));
+        assertEquals("https://taginfo.openstreetmap.org/tags/addr%3Acity=Bassum%3ACity",
+                action.getTaginfoUrlForTag(new Tag("addr:city", "Bassum:City")));
         assertEquals("https://taginfo.openstreetmap.org/relations/route", action.getTaginfoUrlForRelationType("route"));
     }
@@ -48,8 +50,10 @@
      */
     @Test
-    public void testTagHistoryUrls() {
+    public void testTagHistoryUrls() throws Exception {
         TaginfoAction action = new TaginfoAction(() -> null, () -> null).toTagHistoryAction();
         assertEquals("https://taghistory.raifer.tech/#***/railway/", action.getTaginfoUrlForTag(new Tag("railway")));
         assertEquals("https://taghistory.raifer.tech/#***/railway/tram", action.getTaginfoUrlForTag(new Tag("railway", "tram")));
+        assertEquals("https://taghistory.raifer.tech/#***/addr:city/Bassum:City",
+                action.getTaginfoUrlForTag(new Tag("addr:city", "Bassum:City")));
         assertNull(action.getTaginfoUrlForRelationType("route"));
     }
