Я пытаюсь запустить сайт, используя Python 2.7.1, Jinja 2.5.2 и CherryPy 3.1.2. Я использую шаблоны Jinja в кодировке UTF-8. Я заметил, что некоторые символы в этих шаблонах превращаются в вопросительные знаки и прочие тарабарщины. Если я пытаюсь визуализировать шаблоны напрямую без Jinja, я не замечаю этой проблемы. Я обнаружил, что могу это исправить, вызвав .encode("utf-8")
на выходе всех моих обработчиков, но это раздражает, так как загромождает мой источник. Кто-нибудь знает, почему это произойдет или что с этим делать? Я сделал небольшой сценарий, чтобы продемонстрировать эту проблему. Файл «char.txt» представляет собой 2-байтовый файл, состоящий исключительно из символа «» »в кодировке UTF-8.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, jinja2, cherrypy
jinja2env = jinja2.Environment(loader=jinja2.FileSystemLoader("."))
class Test(object):
def test1(self):
#doesn't work
#curl "http://example.com/test1"
#?
return jinja2env.get_template("char.txt").render()
test1.exposed = True
def test2(self):
#works
#curl "http://example.com/test2"
#»
return open("char.txt").read()
test2.exposed = True
def test3(self):
#works, but it is annoying to have to call this extra function all the time
#curl "http://example.com/test3"
#»
return jinja2env.get_template("char.txt").render().encode("utf-8")
test3.exposed = True
cherrypy.config["server.socket_port"] = 8500
cherrypy.quickstart(Test())