En Fri, 04 Apr 2008 01:35:08 -0300, Eric S. Johansson <[EMAIL PROTECTED]>
escribió:
> I'm having a problem (Python 2.4) converting strings with random 8-bit
> characters into an escape form which is 7-bit clean for storage in a
> database.
> Here's an example:
>
> body = meta['mini_body'].encode('unicode-escape')
>
> when given an 8-bit string, (in meta['mini_body']), the code fragment
> above
> yields the error below.
>
> 'ascii' codec can't decode byte 0xe1 in position 13: ordinal not in
> range(128)
Because unicode-escape expects an unicode object as input; if you pass a
byte string, it tries to convert it to unicode using the default encoding
(ascii) and fails.
> I've read a lot of stuff about Unicode and Python and I'm pretty
> comfortable
> with how you can convert between different encoding types. What I don't
> understand is how to go from a byte string with 8-bit characters to an
> encoded
> string where 8-bit characters are turned into two character hexadecimal
> sequences.
Almost there: use string-escape instead; it takes a byte string and
returns another byte string in ASCII.
> I really don't care about the character set used. I'm looking for a
> matched set
> of operations that converts the string to a seven bits a form and back
> to its
> original form.
Ok, string-escape should work. But which database are you using that can't
handle 8bit strings?
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list