eval and unicode
Laszlo Nagy
gandalf at shopzeus.com
Thu Mar 20 08:20:11 EDT 2008
How can I specify encoding for the built-in eval function? Here is the
documentation:
http://docs.python.org/lib/built-in-funcs.html
It tells that the "expression" parameter is a string. But tells nothing
about the encoding. Same is true for: execfile, eval and compile.
The basic problem:
- expressions need to be evaluated by a program
- expressions are managed through a web based interface. The browser
supports UTF-8, the database also supports UTF-8. The user needs to be
able to enter string expressions in different languages, and store them
in the database
- expressions are for filtering emails, and the emails can contain any
character in any encoding
I tried to use eval with/without unicode strings and it worked. Example:
>>> eval( u'"徹底したコスト削減 ÁÍŰŐÜÖÚÓÉ трирова"' ) == eval( '"徹底し
たコスト削減 ÁÍŰŐÜÖÚÓÉ трирова"' )
True
The above test was made on Unbuntu Linux and gnome-terminal.
gnome-terminal does support unicode. What would happen under Windows?
I'm also confused how it is related to PEP 0263. I always get a warning
when I try to enter '"徹底したコスト削減 ÁÍŰŐÜÖÚÓÉ трирова"' in a source
file without "# -*- coding: " specified. Why is it not the same for
eval? Why it is not raising an exception (or why the encoding does not
need to be specified?)
Thanks,
Laszlo
More information about the Python-list
mailing list