Python UTF-8字符仅在Django模板中断开
我目前正在为我们的图书馆员开发一个报告应用程序(使用Django编写),以解决某些实验室的一些问题(我在一所大学工作)。为此,我创建了一个页面,列出了所有有问题的实验室。我正在测试添加注释,这非常有效。除了UTF8字符。我还不知道这个过程的哪一部分失败了 问题:è字符在HTML页面中打印为Ã 这是我个人的“回溯”: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
LANG
是en_US.UTF-8
annotation.text=u'2ème commentaire'
)DEFAULT\u CHARSET=“utf-8”
,没有任何更改character\u set\u数据库isutf8
。SELECT
显示正确的文本
direct\u to\u template
设置,我用{{annotation.text | escape}
打印注释回答 (因为我只有不到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')
è