Dan Mahn <dan.m...@digidescorp.com> wrote:

> 3) Regarding the following code fragment in urlencode():
> 
>            k = quote_plus(str(k))
>           if isinstance(v, str):
>                v = quote_plus(v)
>                l.append(k + '=' + v)
>            elif isinstance(v, str):
>                # is there a reasonable way to convert to ASCII?
>                # encode generates a string, but "replace" or "ignore"
>                # lose information and "strict" can raise UnicodeError
>                v = quote_plus(v.encode("ASCII","replace"))
>                l.append(k + '=' + v)
> 
> I don't understand how the "elif" section is invoked, as it uses the
> same condition as the "if" section.

This looks like a 2->3 bug; clearly only the second branch should be
used in Py3K.  And that "replace" is also a bug; it should signal an
error on encoding failures.  It should probably catch UnicodeError and
explain the problem, which is that only Latin-1 values can be passed in
the query string.  So the encode() to "ASCII" is also a mistake; it
should be "ISO-8859-1", and the "replace" should be a "strict", I think.

Bill
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to