--- a/Allura/allura/model/attachments.py
+++ b/Allura/allura/model/attachments.py
@@ -1,3 +1,5 @@
+import urllib
+
 from pylons import c
 from ming.orm import FieldProperty
 from ming import schema as S
@@ -25,7 +27,7 @@
         return self.ArtifactType.query.get(_id=self.artifact_id)
 
     def url(self):
-        return self.artifact.url() + 'attachment/' + self.filename
+        return self.artifact.url() + 'attachment/' + urllib.quote_plus(self.filename)
 
     def is_embedded(self):
         from pylons import request