Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
好的,我';我已经阅读了所有关于unicode/mako的文章,但是我仍然可以让这个简单的代码正常工作_Unicode_Mako - Fatal编程技术网

好的,我';我已经阅读了所有关于unicode/mako的文章,但是我仍然可以让这个简单的代码正常工作

好的,我';我已经阅读了所有关于unicode/mako的文章,但是我仍然可以让这个简单的代码正常工作,unicode,mako,Unicode,Mako,我已经运行了Python 2.6.6 cat tbuild.py #/usr/bin/env python #-*-编码:utf-8-*- # 从mako.template导入模板 _模板=“”“ %对于my_列表中的v: ${'abc'.encode('utf-8')} ${'風連町?'.编码('utf-8')} %结束 """ 打印模板(_Template).render_unicode(我的_列表=[1,2], 输入_encoding='utf-8', 输出_encoding='utf-8

我已经运行了Python 2.6.6

cat tbuild.py

#/usr/bin/env python
#-*-编码:utf-8-*-
#
从mako.template导入模板
_模板=“”“
%对于my_列表中的v:
${'abc'.encode('utf-8')}
${'風連町?'.编码('utf-8')}
%结束
"""
打印模板(_Template).render_unicode(我的_列表=[1,2],
输入_encoding='utf-8',
输出_encoding='utf-8',
编码错误=“替换”
)
./tbuild.py给出。
文件“/tbuild.py”,
第15行,在print Template(_Template).render_unicode(my_list=[1,2],
文件“/usr/lib/python2.6/site packages/mako/template.py”,
第91行,在uuu init_uuuuuuu(代码,模块)=\u编译\u文本(self,text,filename)
文件“/usr/lib/python2.6/site packages/mako/template.py”,
第357行,在_compile_text node=lexer.parse()中
文件“/usr/lib/python2.6/site packages/mako/lexer.py”,
第192行,在parse self.filename中,)
文件“/usr/lib/python2.6/site packages/mako/lexer.py”,
第184行,在解码_原始_流0,0,文件名中)
mako.exceptions.CompileException:的Unicode解码操作
在第0行编码“ascii”失败字符:0
如果我用日语去掉这条线,效果很好。 很明显,有一些基本的东西我没有理解

谢谢你的帮助,
eo

即使
${'á.encode('utf-8')}
有效,我也会感到惊讶。您需要使用unicode文本
u
来指定unicode字符串。重写<代码>${'風連町?'.编码('utf-8')}为
${u'風連町?'.编码('utf-8')}
并对正在处理的任何文本执行相同的操作

编辑:

考虑到mako:

# -*- coding: utf-8 -*-

from mako.template import Template

_template=u"${u'風連町?'}"
x = Template(_template, output_encoding='utf-8')
print x.render()

output_encoding参数在创建模板时有意义,但在render方法中没有意义。另外,为什么要对输入进行编码,使用相同的编码对输入进行解码,然后使用render_unicode?事实上,render_unicode忽略了输出编码,所以看起来您实际上想要使用render。

这是Python的基础知识,我不知道它与Mako有什么关系。看,我试过了,它也不起作用。我已经尝试了我能想到的每一种组合。谢谢你,这非常有用!我发布的代码是我开始使用的代码的一个迭代。现在让我们看看当我把这个应用到实际问题时会发生什么。看起来你需要一个更好的例子。也许您希望
呈现unicode
,但就目前的情况而言,这对于所呈现的案例来说毫无意义。如果您将@mmgp答案标记为您问题的答案,则最好是用户1364598。
# -*- coding: utf-8 -*-

from mako.template import Template

_template=u"${u'風連町?'}"
x = Template(_template, output_encoding='utf-8')
print x.render()