eval and unicode
gandalf at shopzeus.com
Tue Mar 25 10:05:28 CET 2008
Martin v. Löwis wrote:
>> eval() somehow decoded the passed expression. No question. It did not
>> use 'ascii', nor 'latin2' but something else. Why is that? Why there
>> is a particular encoding hard coded into eval? Which is that
>> encoding? (I could not decide which one, since '\xdb' will be the
>> same in latin1, latin3, latin4 and probably many others.)
> I think in all your examples, you pass a Unicode string to eval, not
> a byte string. In that case, it will encode the string as UTF-8, and
> then parse the resulting byte string.
You are definitely wrong:
s = 'u"' + '\xdb' + '"'
type(s) # <type 'str'>
eval(s) # u'\xdb'
s2 = '# -*- coding: latin2 -*-\n' + s
type(s2) # <type 'str'>
eval(s2) # u'\u0170'
Would you please read the original messages before sending answers? :-D
More information about the Python-list