On 8/19/2016 1:10 PM, Larry Martell wrote:
I have some python code (part of a django app) that processes a
request that contains a png file. The request is send with
content_type = 'application/octet-stream'

An 'octet' is a byte of 8 bits. So the content is a stream of bytes and MUST NOT be decoded as unicode text.

In the python code I want to write this data to a file and still have
it still be a valid png file.

The data I get looks like this:

u'\ufffdPNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01\ufffd\x00\x00\x01\ufffd
......'

The data you got looked like b'...PNG...' where the *ascii* codes for "PNG' identify it as a png byte stream. It was mistakenly decoded to unicode text by something. Png bytes must be decoded, when decoded, to a png image. You want to write the bytes to a file exactly as received, without decoding.

If I try and write that to a file it fails with a UnicodeEncodeError.
If I write it with encode('utf8') it writes the file, but then it's no
longer a valid png file.

The data ceased representing a png image as soon as wrongfully decoded as unicode text.


--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to