16

我需要在我生成的每个 Python 源文件的顶部包含版权声明:

#   Copyright: © 2008 etc.

但是,当我运行这样的文件时,我会收到以下消息:

SyntaxError:第 3 行文件 MyFile.py 中的非 ASCII 字符“\xa9”,但未声明编码;有关详细信息,请参阅http://www.python.org/peps/pep-0263.html

显然 Python 对版权符号不满意,因为它假定源文件都是 ASCII 格式。要么我需要让我的第一行是:

# -*- coding: iso-8859-1 -*-

告诉 Python 我正在使用拉丁编码,或者我可以将版权声明更改为:

#   Copyright: \xa9 2008 etc.

这可能没有相同的法律地位。

有没有更优雅的解决方案?

4

6 回答 6

35

ASCII 中的版权符号是拼写(c) 或“ Copyright”。

参见第 61 号通知,计算机程序的版权登记

虽然法律形式主义(参见第 1 号通告,版权基础)确实是

符号©(圆圈中的字母C),或单词“Copyright”或缩写“Copr.”;和...

这也是真的

为保证在所有 UCC 成员国中保护受版权保护的作品,通知必须包含符号 ©(不接受“版权”一词或缩写词)

您可以通过循环338a进行挖掘。

然而,这已经在法庭上进行了测试。这不是一个有趣的问题。如果您搜索“(c) 可接受的 c-in-a-circle”,您会发现所有律师都同意 (c) 是可接受的替代品。见珀尔和威廉姆斯。参见 Scott 关于信息技术法。

于 2008-10-21T10:17:32.523 回答
7

与公认的答案相反,AFAIK,(c)不是版权符号的官方认可替代品,尽管我不确定它是否在法庭上经过测试。

但是,© 只是版权一词的缩写。说“版权所有 2008 Robert Munro”等同于说“© 2008 Robert Munro”

您的“版权:© 2008 等” 扩展为“版权:版权 2008 等”

维基百科的页面似乎同意我的观点 http://en.wikipedia.org/wiki/Copyright_symbol

在美国,版权声明由三个元素组成: 1. © 符号,单词“Copyright”或缩写“Copr.”;...

于 2008-10-21T11:50:53.707 回答
5

先放这一行:

# -*- coding: utf-8 -*-
于 2013-10-06T15:32:56.927 回答
2

你总是可以恢复到旧的(c)

于 2008-10-21T10:17:51.977 回答
2

等待Python 3k,其中源的默认编码是 UTF-8?

于 2008-10-21T11:40:55.583 回答
2

对于 Python 2,“正确”的做法是指定编码,或者永远不要使用非 ASCII 字符。指定编码使编译器和人类更简单。抱歉,Python 最初指定 ASCII 作为默认值,早在黑暗时代。

对于 Python 3,UTF-8 是默认编码,所以你应该没问题。在这种情况下,如果您使用默认值,我建议不要指定编码。

无论一种语言是否允许/需要编码规范,在 Unicode 时代,这是我们需要为每个“文本”文件牢记的问题。

于 2009-08-05T20:48:45.580 回答