Author: gwilson
Date: 2010-01-03 12:06:27 -0600 (Sun, 03 Jan 2010)
New Revision: 12066
Modified:
django/trunk/django/utils/encoding.py
Log:
Fixed #12445 -- Added ' (single quote), @ (at sign), and ~ (tilde) to safe
characters in `iri_to_uri` function.
Modified: django/trunk/django/utils/encoding.py
===================================================================
--- django/trunk/django/utils/encoding.py 2010-01-03 06:56:10 UTC (rev
12065)
+++ django/trunk/django/utils/encoding.py 2010-01-03 18:06:27 UTC (rev
12066)
@@ -131,12 +131,21 @@
Returns an ASCII string containing the encoded result.
"""
- # The list of safe characters here is constructed from the printable ASCII
- # characters that are not explicitly excluded by the list at the end of
- # section 3.1 of RFC 3987.
+ # The list of safe characters here is constructed from the "reserved" and
+ # "unreserved" characters specified in sections 2.2 and 2.3 of RFC 3986:
+ # reserved = gen-delims / sub-delims
+ # gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
+ # sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ # / "*" / "+" / "," / ";" / "="
+ # unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ # Of the unreserved characters, urllib.quote already considers all but
+ # the ~ safe.
+ # The % character is also added to the list of safe characters here, as the
+ # end of section 3.1 of RFC 3987 specifically mentions that % must not be
+ # converted.
if iri is None:
return iri
- return urllib.quote(smart_str(iri), safe='/#%[]=:;$&()+,!?*')
+ return urllib.quote(smart_str(iri), safe="/#%[]=:;$&()+,!?*@'~")
# The encoding of the default system locale but falls back to the
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.