【问题标题】:appengine and jinja2 templating, correctly handling encoding for latin charsetappengine 和 jinja2 模板,正确处理拉丁字符集的编码
【发布时间】:2013-01-26 11:38:00
【问题描述】:

我正在用 jinja 构建一个简单的分层模板。 我将我的整体 html 文件拆分成更小的块以重用它们。 在我的 html 中,我有重音字符,例如 èàù... 当我尝试运行该应用程序时,我收到了抱怨我的文件未正确编码的错误。 所以我决定遵守 utf-8 标准,并将这些字符替换为 ù 等等... 这可行,但作为工作流程似乎有点麻烦。 我正在徘徊,对于模板文件和必须在这些模板中呈现的内容,哪种方法才是解决此类问题的正确方法。

我认为在存储文本之前将文本编码为 utf-8 是一种很好的做法,但我不确定。

【问题讨论】:

    标签: google-app-engine character-encoding jinja2


    【解决方案1】:

    当您在 (html) 文件、模板和 python 代码中使用 utf-8 时,它可以正常工作,您可以使用:èàù...

    请确保您的编辑器使用 utf-8 编码的文件阅读这篇关于 utf-8 的文章。 :http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python。你也可以使用:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    

    在 Python 模块的开头。

    【讨论】:

    【解决方案2】:

    在模板中,使用正确的 utf-8 编码保存文件就足够了,见下图。 对于您想要存储在源代码中并在程序中传递的字符串,如果您只需要一个快速而肮脏的建议,这里是:

    1. 将 .py 文件另存为 utf-8
    2. 现在您可以在字符串中使用所需的所有字符
    3. 您只需要明确告知系统的其余部分您是 使用 utf-8 编码

    示例

    my_string = """I write àny character I want herè, just only ensurè that the encoding for the file you are writing is utf-8 àèàééàà"""
    
    def utf8(s):
        return unicode(s, 'utf8')
    
    pass_string_around = utf8(my_string)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 2011-01-27
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多