我有一个包含dict结构的FAQ.conf文件,我将其导入到Django中。问答包含utf-8字符和html标记。
{
'1': {'question':'','answer':''},
'2': {},
'3': {},
}
所以我用ast来导入它:
with open(os.path.join(FS_ROOT, FAQ_FILE)) as q: FAQ = ast.literal_eval(q.read())
将其放入我的视图上下文并使用过滤器{{FAQ | safe}} 我收到了:
{'1': {'answer': 'zewn\xc4\x99trznych mog\xc4\x85 si\xc4\x99 do\xc4\x87 osoby. W szczeg\xc3\xb3lno\xc5\x9bci takie, kt\xc3\xb3rych. ...}
如何在模板中获得正确的输出?
答案 0 :(得分:1)
假设您使用的是Python 2,问题在于您将文件读取为字节字符串而不是Unicode字符串。我相信ast
处理utf-8很好,所以你可以这样做:
with open(os.path.join(FS_ROOT, FAQ_FILE)) as q: FAQ = ast.literal_eval(q.read().decode('utf-8'))
或使用codecs.open
以正确的编码打开文件。
如果ast
不喜欢你的Unicode字符,你可以在字符串上调用decode()
,然后再将它们传递给Django。
如果您使用的是Python 3,问题可能是编码不是 utf-8,在这种情况下使用codecs
如上所述应该有效,前提是您使用正确的编码。