首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

mako 中文乱码有关问题

2013-03-13 
mako 中文乱码问题python 源码是from mako.lookup import TemplateLookupfrom mako.template import Templ

mako 中文乱码问题
python 源码是


from mako.lookup import TemplateLookup
from mako.template import Template
_lookup = TemplateLookup(        directories=['D:/PythonWeb/JavaCardProjectWeb/templates'],
        input_encoding='utf-8',
        output_encoding='utf-8',
         default_filters=['decode.utf_8'])
tem = _lookup.get_template('footer.html')
print tem.render()



mytemplate = Template(filename='D:/PythonWeb/JavaCardProjectWeb/templates/footer.html')
print mytemplate.render()



footer.html 代码是

## -*- coding: utf-8 -*- 
<div class="footer" role="contentinfo">
<div id="colophon">
<div id="site-generator">
&#169; 2012 BigYuki. 
<a href="http://code.google.com/appengine/" 
title="Semantic Personal Publishing Platform" 
rel="generator">
Proudly powered by Google App Engine.  谢谢了
</a> 
</div>
<!-- #site-generator -->
<div id="site-info"> Designed by <a href="http://www.gauson.com">Gauson Design</a> </div>
<!-- #site-info -->
</div>
<!-- #colophon -->
</div>




print tem.render() 这条语句执行时中文部分乱码

print mytemplate.render() 输出上的中文部分是正常。

请问如何使 tem.render() 这条语句输出 的中标部分也是正常的呢?



[解决办法]
虽然代码是utf-8,但import了模块,不知道模块是怎么处理的,所以我答不上来

但我从事处理字符串多年(其他语言,东亚文字),给你说个通则:
乱码就是输入、处理过程+程序本身代码、输出 三者不一致的结果
如果过程中还涉及多次输入输出(例如数据库读取),则需要二次或多次拆分检查

py2/py3处理unicode方式不同,还用到模板,所以模板本身也要检查
因为处理动态字符串和模板这是两种编码的输入问题,一致当然好,不一致还是要做一个转换步骤的

然后输出还涉及显示的问题,如果是浏览器显示,在没有指定charset的情况下,浏览器默认选择什么编码也要考虑……

我不能直接指出问题所在,因为无法了解你的工作环境,只能指导你去思考寻找遗漏的环节

热点排行