2013-01-13 78 views
0

我一直爭取這整整一夜......Jinja2的奇怪編碼錯誤

我試圖用Python markdown生成從.MD文件HTML文件,將它們嵌入到一些其他的HTML文件。

這裏是有問題的片段:

md = markdown.Markdown(encoding="utf-8") 
input_file = codecs.open(f, mode="r", encoding="utf-8") # f is the name of the markdown file 
text = input_file.read() 
html = md.convert(text) # html generated from the markdown file 

context = { 
    'css_url': url_for('static', filename = 'markdown.css'), 
    'contents': html 
} 

rendered_file = render_template('blog.html', **context) 
output = open(splitext(f)[0] + '.html', 'w') # write the html to disk 
output.write(rendered_file) 
output.close() 

這裏是我的 「blog.html」 模板,這是非常簡單的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>blog</title> 
    <link rel="stylesheet" href="{{ css_url }}" type="text/css" /> 
</head> 

<body> 
    {{ contents }} 
</body> 

</html> 

然而這就是我得到:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>blog</title> 
    <link rel="stylesheet" href="/static/markdown.css" type="text/css" /> 
</head> 

<body> 
&lt;li&gt;People who love what they are doing&lt;/li&gt; 
&lt;li&gt;&lt;/li&gt; 
&lt;/ol&gt; 
</body> 

</html> 

所以我得到那些怪異的 「& GT」,「& LT 「的東西,儘管我已經指定編碼爲'utf-8'。什麼可能會出錯?

謝謝!

回答

1

&lt;&gt;無關與編碼。這些是表示您的輸入的HTML實體。你應該mark it as safe,這樣,忍者不會自動逃脫它。

{{ contents|safe }} 
+0

我的天哪,你剛纔救了我的命......太感謝你了! –