Lennart Regebro writes: > On Thu, Apr 25, 2013 at 4:22 PM, MRAB <pyt...@mrabarnett.plus.com> wrote: > > The JSON specification says that it's text. Its string literals can > > contain Unicode codepoints. It needs to be encoded to bytes for > > transmission and storage, but JSON itself is not a bytestring format. > > OK, fair enough. > > > base64 is a way of encoding binary data as text. > > It's a way of encoding binary data using ASCII. There is a subtle but > important difference.
Yes, there is a difference, but I think you're wrong. RFC 4648 explicitly states that Base-n encodings are intended for "human handling" and even makes reference to character glyphs (the rationale for excluding confusable digits from the Base32 alphabet). That's text. Even if it is a rather restricted subset of text, those restrictions are much stronger than merely to ASCII, and they are based on aspects of text that go well beyond merely an encoding with a small code unit. > > In Python 3 we're trying to stop mixing binary data (bytestrings) with > > text (Unicode strings). > > Yup. And that's why a byte64 encoding shouldn't return Unicode strings. That's inaccurate. Antoine has presented several examples of why *some* base64 encoders might return Unicode strings, precisely because their output will be embedded in Unicode streams. Debugging the MIME composition functions in the email module is another. An accurate statement is that these use cases are relatively unusual. The common use case is feeding a binary stream directly into a wire protocol. Supporting that use case demands a base64 encoder with a bytes-to-bytes signature in the stdlib, for both convenience and to some extent efficiency. I don't really care if the stdlib supports the specialized use cases with a separate base64 encoder (Antoine suggested the binascii module), or if it leaves that up to the user (it's just an occasional use of ".decode('ascii')", after all). _______________________________________________ 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