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