我正在尝试在Pyramid应用程序的视图方法的输出中包含版权符号。这就是方法:
def get_cpyright(self):
cpyright = ["My Super App © 2012"]
if (datetime.datetime.now().year > 2012):
cpyright.append(" - %d " % datetime.datetime.now().year)
return " ".join(cpyright)
但是,当它呈现给应用程序时,网页显示为:
我的超级应用程序和副本; 2012
在直接的网络开发中,我可以使用©
或©
我会得到©字符。在元组中呈现字符串时不是这种情况。
如何显示版权符号?我在金字塔自己的文档中看到它,所以我知道它是可能的。
答案 0 :(得分:4)
原因是您的模板变量正在转换为HTML上下文和& copy;被转义为& amp; copy;。
如果你正在使用变色龙模板,你可以使用$ {structure:variable}来避免在显示时被转义(因为你已经在你的方法中将其转义)。您还可以将其包装在具有返回内容的__html__方法的对象中。有关详细信息,请参阅In Pyramid, how do I return raw HTML from a view?。
答案 1 :(得分:1)
为什么不just make the Python file unicode,请确保输出html是一个合适的编码并写下这样的版权符号?
def get_cpyright(self):
cpyright = [u"My Super App © 2012"]
if (datetime.datetime.now().year > 2012):
cpyright.append(" - %d " % datetime.datetime.now().year)
return " ".join(cpyright)
答案 2 :(得分:1)
比你想象的更容易在源代码文件中弄乱你的编码。尝试在一堆不同的编辑器中打开它,你可能会迟早打破编码。
我会这样做:
print unichr(169)
编辑你的功能我会用这个替换你的第一行:
cpyright = ''.join(["My Super App ", unichr(169), " 2012"])