2

我试图在 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

在直接的 web-dev 中,我可以使用©或者©我会得到 © 字符。在元组中呈现字符串时情况并非如此。

如何让版权符号显示?我在 Pyramid 自己的文档上看到它,所以我知道这是可能的。

4

3 回答 3

4

原因是您的模板变量正在为 HTML 上下文和 © 进行转义。被转义为 ©。

如果您使用变色龙模板,您可以使用 ${structure:variable} 来避免在显示时对其进行转义(因为您已经在方法中对其进行了转义)。您还可以将其包装在具有 __html__ 方法的对象中,该方法返回内容。请参阅在 Pyramid 中,如何从视图返回原始 HTML?了解更多信息。

于 2012-08-07T22:08:29.263 回答
1

为什么不直接制作 Python 文件 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)
于 2012-08-07T21:56:37.147 回答
1

弄乱源代码文件中的编码比您想象的要容易。随着时间的推移,尝试在一堆不同的编辑器中打开它,你可能迟早会破坏编码。

我会这样做:

print unichr(169)

编辑你的函数我会用这个替换你的第一行:

cpyright = ''.join(["My Super App ", unichr(169), " 2012"])
于 2012-08-07T22:01:03.987 回答