Jython: Unicode Strings in eval()/exec()
Я столкнулся с такой ситуацией - в пользовательском интерфейсе я позволяю ввести выражение на Jython (основная программа на Java). Используется Jython 2.1. Вычисляю выражение с помощью PythonInterpreter.eval().
Грубо говоря, выражения должны быть вида:
И при подстановке разных значений в name должны получаться строки "Здесь был Петя", "Здесь был Вася" etc.
Так вот, если в выражении участвуют строки с русскими символами, они коцаются, тогда как со значениями, присвоенными отдельно, всё в порядке:
Поиск в google оставил впечатление, что Unicode-объекты в eval()/exec() не поддерживаются.
Так ли это?
Если да, то какие альтернативные способы представления выражений можно предложить, чтобы всё-таки строки записывались в тексте выражения?
Грубо говоря, выражения должны быть вида:
'Здесь был ' + name
И при подстановке разных значений в name должны получаться строки "Здесь был Петя", "Здесь был Вася" etc.
Так вот, если в выражении участвуют строки с русскими символами, они коцаются, тогда как со значениями, присвоенными отдельно, всё в порядке:
>>> x = 'привет'
>>> print x
привет
>>> x
u'\u0407\u0430\u0401\u045E\u0490\u0432'
>>>
>>> eval('x')
u'\u0407\u0430\u0401\u045E\u0490\u0432'
>>>
>>> print eval('"привет"')
0☺^Р2
Поиск в google оставил впечатление, что Unicode-объекты в eval()/exec() не поддерживаются.
Так ли это?
Если да, то какие альтернативные способы представления выражений можно предложить, чтобы всё-таки строки записывались в тексте выражения?
