diff --git a/mistune/util.py b/mistune/util.py index 192f6ef..f99fe37 100644 --- a/mistune/util.py +++ b/mistune/util.py @@ -20,7 +20,12 @@ def escape(s, quote=True): def escape_url(link): - safe = '/#:()*?=%@+,&' + safe = ( + ':/?#@' # gen-delims - '[]' (rfc3986) + '!$&()*+,;=' # sub-delims - "'" (rfc3986) + '%' # leave already-encoded octets alone + ) + if html is None: return quote(link.encode('utf-8'), safe=safe) return html.escape(quote(html.unescape(link), safe=safe))