Python UTF-8字符仅在Django模板中断开

Python UTF-8字符仅在Django模板中断开,python,django,utf-8,django-templates,Python,Django,Utf 8,Django Templates,我目前正在为我们的图书馆员开发一个报告应用程序(使用Django编写),以解决某些实验室的一些问题(我在一所大学工作)。为此,我创建了一个页面,列出了所有有问题的实验室。我正在测试添加注释,这非常有效。除了UTF8字符。我还不知道这个过程的哪一部分失败了 问题:è字符在HTML页面中打印为Ã 这是我个人的“回溯”: 我使用Terminal.app(在UTF-8中)通过SSH连接到测试服务器 服务器的LANG是en_US.UTF-8 我通过启动ipython的python manage.py sh

我目前正在为我们的图书馆员开发一个报告应用程序(使用Django编写),以解决某些实验室的一些问题(我在一所大学工作)。为此,我创建了一个页面,列出了所有有问题的实验室。我正在测试添加注释,这非常有效。除了UTF8字符。我还不知道这个过程的哪一部分失败了

问题:è字符在HTML页面中打印为Ã

这是我个人的“回溯”:

  • 我使用Terminal.app(在UTF-8中)通过SSH连接到测试服务器
  • 服务器的
    LANG
    en_US.UTF-8
  • 我通过启动ipython的python manage.py shell plus添加了注释(
    annotation.text=u'2ème commentaire'
  • 我尝试在我的设置中添加
    DEFAULT\u CHARSET=“utf-8”
    ,没有任何更改
  • 我检查了MySQL的配置:
    character\u set\u数据库
    is
    utf8
    SELECT
    显示正确的文本
  • 在myviews.py中,我只是从DB中获取注释并对它们进行排序。然后我用包含数据的dict调用
    direct\u to\u template
  • 在我的模板中,HTML页面字符集用
    设置,我用
    {{annotation.text | escape}
    打印注释
  • 问题似乎出现在第5-6步,但我不知道如何抓住它,很明显,也不知道如何纠正它。你知道吗

    谢谢

    PS:如果你想的话,我可以提供更多的代码,但这很可能会让你感到困惑(因为我认为DB结构有点奇怪)


    回答 (因为我只有不到10个代表,我现在无法回答自己的问题,所以我将答案贴在下面。)

    我终于找到了答案

    In [13]: annotation.text
    Out[13]: u'2\xc3\xa8me commentaire'
    
    In [14]: annotation.text = '2ème commentaire'
    In [15]: annotation.save()
    In [16]: annotation.text
    Out[16]: '2\xc3\xa8me commentaire'
    
    显然,表示字符串在UTF-8中的“u”是一个“过度杀戮”。有两种方法可以在UTF-8中对相同的字符进行编码(如果我正确理解了所读内容):

    我只是选择了两者的混合,而且。。。嗯,那是错误的


    无论如何,谢谢你的回答

    你的模板(HTML文件本身)是用UTF-8编码的吗?

    当你查看
    tools->encoding
    Firefox告诉我UTF-8是页面编码时,浏览器会检查什么编码。我试过了,但没有改变什么。我选择你的答案作为被接受的答案,以表示其他人已经找到了答案,这是真实的,即使它不是你的。无论如何,谢谢你的回复!
    In [37]: print('\xc3\xa8').decode('utf8')
    è
    
    In [38]: print(u'\xe8')
    è
    
    In [39]: print(u'\xc3\xa8')
    è