[Python-Dev] New PyPI broken package editing
Walter Dörwald
walter at livinglogic.de
Thu Mar 31 16:35:37 CEST 2005
Martin v. Löwis wrote:
> Walter Dörwald wrote:
>
>> The register command in 2.4 (and current CVS) simply does a
>> value = str(value)
>> in post_to_server() so the encoded bytes sent depend on the
>> default encoding. Would it be sufficient to change this to
>> value = unicode(value).encode("utf-8")
>
> Indeed. I think this can go into 2.4.2.
OK, I've checked this into HEAD and release24-maint (including the
change to the Content-Type header).
>> Another solution might be to include the encoding in the Content-type
>> header of the request. IMHO the best solution would be to do both:
>> Always use UTF-8 as the encoding and include this in the Content-type
>> header in the request. PyPI should honor this encoding when it finds
>> it and should fall back to whatever it used before if it doesn't.
>
> Yeah, well :-) Content-type in form upload is a mess, as you certainly
> know. It should be honored, but commonly isn't. This, in turn, causes
> browsers to ignore it.
Fortunately we have both ends under control (except for old Python
versions).
> PyPI uses the CGI module. It currently decodes anything that doesn't
> have a filename attribute to UTF-8, causing rejection of anything
> that doesn't send UTF-8. This could be fixed/extended, but I think that
> would be best done in the CGI module, for consumption by any application
> that uses form upload. For example, doing
>
> cgi.FieldStorage(..., encoding="UTF-8")
>
> should cause
>
> a) decoding of every field that has an encoding= in its content
> type
> b) decoding of every field that is not a file to UTF-8. It is a
> file if it
> I) has a filename, or
> II) cannot be decoded to the target decoding
>
> For backwards compatibility, a) can only be enabled if the CGI
> application explicitly tells what encoding it expects.
>
> I'd like to state "contributions are welcome", although others
> may think differently.
OK, I'll see, if I can give this a try.
Bye,
Walter Dörwald
More information about the Python-Dev
mailing list