Index: trunk/src/org/openstreetmap/josm/tools/Tag2Link.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Tag2Link.java	(revision 17735)
+++ trunk/src/org/openstreetmap/josm/tools/Tag2Link.java	(revision 17736)
@@ -27,4 +27,5 @@
 import javax.json.JsonValue;
 
+import com.google.gdata.util.common.base.PercentEscaper;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.OsmUtils;
@@ -202,9 +203,9 @@
         if (key.matches("wikimedia_commons|image") && value.matches("(?i:File):.*")) {
             OsmUtils.splitMultipleValues(value).forEach(i -> linkConsumer.acceptLink(
-                    tr("View image on Wikimedia Commons"), "https://commons.wikimedia.org/wiki/" + i, imageResource.get()));
+                    tr("View image on Wikimedia Commons"), getWikimediaCommonsUrl(i), imageResource.get()));
         }
         if (key.matches("wikimedia_commons|image") && value.matches("(?i:Category):.*")) {
             OsmUtils.splitMultipleValues(value).forEach(i -> linkConsumer.acceptLink(
-                    tr("View category on Wikimedia Commons"), "https://commons.wikimedia.org/wiki/" + i, imageResource.get()));
+                    tr("View category on Wikimedia Commons"), getWikimediaCommonsUrl(i), imageResource.get()));
         }
 
@@ -216,4 +217,8 @@
     }
 
+    private static String getWikimediaCommonsUrl(String i) {
+        return "https://commons.wikimedia.org/wiki/" + new PercentEscaper(PercentEscaper.SAFEPATHCHARS_URLENCODER, false).escape(i);
+    }
+
     private static String getLinkName(String url, String fallback) {
         return tr("Open {0}", getHost(url, fallback));
