On 21/07/2017 20:52, Skip Montanaro wrote: > I would like to JSON encode some PDF and Excel files. I can read the content: > > pdf = open("somefile.pdf", "rb").read() > > but now what? json.dumps() insists on treating it as a string to be > interpreted as utf-8, and bytes == str in Python 2.x. I can't > json.dumps() a bytearray. I can pickle the raw content and json.dumps > that, but I can't guarantee the listener at the other end will be > written in Python. Am I going to have to do something like > base64-encode the raw bytes to transmit them? > > Thx, > > Skip >
Yes, json is a text based format and can't contain arbitrary binary data. So you'll have to encode the bytes into some textual form first. If you think base-64 is too verbose you might try base-85 instead which is slightly more efficient (available since python 3.4 in the base64 module)? Irmen -- https://mail.python.org/mailman/listinfo/python-list