diff options
Diffstat (limited to 'django/utils/html.py')
| -rw-r--r-- | django/utils/html.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/django/utils/html.py b/django/utils/html.py index fb636600c9..d8fa00dab8 100644 --- a/django/utils/html.py +++ b/django/utils/html.py @@ -8,6 +8,7 @@ from urllib.parse import ( parse_qsl, quote, unquote, urlencode, urlsplit, urlunsplit, ) +from django.utils.encoding import punycode from django.utils.functional import Promise, keep_lazy, keep_lazy_text from django.utils.http import RFC3986_GENDELIMS, RFC3986_SUBDELIMS from django.utils.safestring import SafeData, SafeString, mark_safe @@ -210,7 +211,7 @@ def smart_urlquote(url): return unquote_quote(url) try: - netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE + netloc = punycode(netloc) # IDN -> ACE except UnicodeError: # invalid domain part return unquote_quote(url) @@ -319,7 +320,7 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False): elif ':' not in middle and is_email_simple(middle): local, domain = middle.rsplit('@', 1) try: - domain = domain.encode('idna').decode('ascii') + domain = punycode(domain) except UnicodeError: continue url = 'mailto:%s@%s' % (local, domain) |
