Hack Jinja2 для кодирования с `utf-8` вместо` ascii`?

Jinja2 преобразует все переменные шаблона в юникод перед обработкой. Может ли кто-нибудь найти место, где это происходит?

Проблема заключается в том, что он предполагает, что строки ascii, но мы (в Roundup) используем utf-8 внутренне, и наш ORM (HyperDB) автоматически восстанавливает свойства объекта utf-8 и преобразует их все в unicode в каждом представлении перед переходом к шаблонам слишком много работы.

Ответ 1

Ответа на вопрос Armin:

К сожалению, это невозможно. Jinja использует принудительное принуждение по умолчанию на 2.x, которое Python обеспечивает скорость. Нет никаких гарантированных звонков, чтобы сделать что-то юникод. Единственный дерьмовый выбор - перезагрузить sys и вызвать sys.setdefaultencoding('utf-8') или что-то в этом роде.

UPDATE: Jinja2 2.8 содержит некоторые обновления, связанные с неявными преобразованиями строк. Это дает мне представление о том, что можно обойтись без sys.setdefaultencoding('utf-8') путем переопределения методов __add__ типа юникода и убедиться, что это тип используется сначала при конкатенации строк.

https://github.com/mitsuhiko/jinja2/issues/511