Google app engine UnicodeDecodeError与Jinja2+;盖伊

Google app engine UnicodeDecodeError与Jinja2+;盖伊,google-app-engine,jinja2,Google App Engine,Jinja2,当我试图从dict中呈现外来字符时,出现以下错误。你知道我应该怎么做吗 File "/base/data/home/apps/s~montaoproject/cap.354503891062679364/main.py", line 333, in render_jinja self.response.out.write(template.render(data)) File "/base/data/home/apps/s~montaoproject/cap.354503891062

当我试图从dict中呈现外来字符时,出现以下错误。你知道我应该怎么做吗

File "/base/data/home/apps/s~montaoproject/cap.354503891062679364/main.py", line 333, in render_jinja
    self.response.out.write(template.render(data))
  File "/base/data/home/apps/s~montaoproject/cap.354503891062679364/jinja2/environment.py", line 894, in render
    return self.environment.handle_exception(exc_info, True)
  File "/base/data/home/apps/s~montaoproject/cap.354503891062679364/templates/list_jinja.html", line 199, in top-level template code
    {% for key,value in location_map_br_11_cap.items() %}<option value="3" >{{ value.name }}</option>{% endfor %}
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128)
我将带着成功的希望尝试这一点:

location_map_br_11_cap = {1: {
    'name': str('Toda Região 11 (ddd)').decode('utf-8'),
    'lat': -23.55,
    'long': -46.64,
    'radius': 294200,
    }, 2: {
    'name': str('Todo Estado de São Paulo').decode('utf-8'),
    'lat': -22.90,
    'long': -43.21,
    'radius': 294200,
    }, 1: {
    'name': str('Toda região Sudeste do Brasil').decode('utf-8'),
    'lat': -23.55,
    'long': -46.64,
    'radius': 294200,
    }}

location\u map\u br\u 11\u cap
变量包含名称为原始字符串而非unicode字符串的值。将字符串转换为Unicode,以便Jinja在生成模板时知道如何对其进行编码。

您的
位置\u map\u br\u 11\u cap
变量包含名称为原始字符串而非Unicode字符串的值。将字符串转换为Unicode,以便Jinja在生成模板时知道如何对其进行编码。

谢谢@Nick Johnson。我希望我能直接知道怎么做。我想我可以在字符串周围放一个
str()
,使其成为unicode,或者在整个字符串周围放一个
str()
variable@Nicke
str
将对象转换为字节字符串。如果你有字节字符串,你可以通过调用
.decode(codec)
对它们进行解码-可能是
utf8
,但这取决于你的应用程序。
.decode('utf-8')
对我有效。谢谢你的帮助@Nick Johnson谢谢你@Nick Johnson。我希望我能直接知道怎么做。我想我可以在字符串周围放一个
str()
,使其成为unicode,或者在整个字符串周围放一个
str()
variable@Nicke
str
将对象转换为字节字符串。如果你有字节字符串,你可以通过调用
.decode(codec)
对它们进行解码-可能是
utf8
,但这取决于你的应用程序。
.decode('utf-8')
对我有效。谢谢你的帮助@Nick Johnson
location_map_br_11_cap = {1: {
    'name': str('Toda Região 11 (ddd)').decode('utf-8'),
    'lat': -23.55,
    'long': -46.64,
    'radius': 294200,
    }, 2: {
    'name': str('Todo Estado de São Paulo').decode('utf-8'),
    'lat': -22.90,
    'long': -43.21,
    'radius': 294200,
    }, 1: {
    'name': str('Toda região Sudeste do Brasil').decode('utf-8'),
    'lat': -23.55,
    'long': -46.64,
    'radius': 294200,
    }}