【问题标题】:UnicodeDecodeError with Jinja2 + GAEJinja2 + GAE 的 UnicodeDecodeError
【发布时间】:2011-11-07 02:40:13
【问题描述】:

尝试从 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)'),
    'lat': -23.55,
    'long': -46.64,
    'radius': 294200,
    }, 2: {
    'name': str('Todo Estado de São Paulo'),
    'lat': -22.90,
    'long': -43.21,
    'radius': 294200,
    }, 1: {
    'name': str('Toda região Sudeste do Brasil'),
    'lat': -23.55,
    'long': -46.64,
    'radius': 294200,
    }}

我会尝试这个,希望它会成功:

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,
    }}

【问题讨论】:

    标签: google-app-engine jinja2


    【解决方案1】:

    您的 location_map_br_11_cap 变量包含名称为原始字符串而非 Unicode 字符串的值。将您的字符串转换为 Unicode,以便 Jinja 在生成模板时知道如何对它们进行编码。

    【讨论】:

    • 谢谢@尼克·约翰逊。我希望我直接知道该怎么做。我想我可以在字符串周围放一个 str() 使其成为 unicode,或者在整个变量周围放一个 str()
    • @Nicke str 将对象转换为字节字符串。如果你有字节字符串,你可以通过调用 .decode(codec) 来解码它们 - 可能是 utf8,但这取决于你的应用程序。
    • .decode('utf-8') 为我工作。感谢@Nick Johnson 的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2011-12-23
    • 2013-01-17
    • 2013-03-22
    • 2018-03-19
    相关资源
    最近更新 更多