金字塔应用程序的版权符号

时间:2012-08-07 21:54:20

标签: python character-encoding pyramid

我正在尝试在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

在直接的网络开发中,我可以使用©©我会得到©字符。在元组中呈现字符串时不是这种情况。

如何显示版权符号?我在金字塔自己的文档中看到它,所以我知道它是可能的。

3 个答案:

答案 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"])