Python, ASP, ADO, and Image string/binary problems
shonn at shonn.com
Wed Mar 7 11:23:54 CET 2001
Perfect. It works for both Response.BinaryWrite and doing an AppendChunk
with ADO. I noticed that it was coming in as a buffer from ADO but
everything that I saw relating to buffers was that they were an undocumented
Thank you, that ends a lot of frustration.
"Alex Martelli" <aleaxit at yahoo.com> wrote in message
news:984ql60tdk at news1.newsguy.com...
> "Shonn Gilson" <shonn at shonn.com> wrote in message
> news:tabjei1p4a9481 at corp.supernews.com...
> > that '\377' is octal not decimal.). The problem seems to be that when
> > passes strings through COM that they get translated to Unicode. This
> Yes, this IS what COM (actually, Automation) specifies -- *all* strings
> are Unicode (note that Java specifies exactly the same thing, but COM
> was there first:-).
> Bravo for diagnosing that this was the problem in your case, though!
> > for things like Response.BinaryWrite along with things like recordsets
> > (objRS = Server.CreateObject("ADODB.Recordset")). The result is that
> > beginning of my jpg file looks like
> > '\377\000\330\000\377\000\340\000\000\000\020\000J\000F\000I\000F'
> > of '\377\330\377\340\000\020JFIF'.
> > Does anyone know how to handle this?
> If you don't want to use *STRINGS* (normally-readable sequences of
> characters), then don't. Python offers other datatypes, which will
> help you map (for example) *sequences of BYTES* (a byte is not the
> same thing as a character -- even though decades of programming with
> single-byte-characters strings have obscured this for many:).
> Specifically, I think that what you want is the built-in *BUFFER*
> type, which Python/COM will map into (in low-level COM terms) a
> SAFEARRAY of VT_UI8 (a sequence-of-bytes, uninterpreted).
> Try just changing this line:
> > > Response.BinaryWrite(bstrOut.getvalue())
> > > Response.BinaryWrite(buffer(bstrOut.getvalue()))
> and see if that solves it...
More information about the Python-list