2008-10-21 10 views
13

Ich brauche eine Copyright-Erklärung am Anfang jeder Python-Quelldatei erzeugen I enthalten:Putting Copyright Symbol in eine Python-Datei

# Copyright: © 2008 etc. 

Allerdings, wenn ich ich diese Meldung dann eine solche Datei ausgeführt erhalten:

SyntaxError: Nicht-ASCII-Zeichen '\ xa9' in Datei MyFile.py in Zeile 3, aber keine Codierung deklariert; Details siehe http://www.python.org/peps/pep-0263.html.

Scheinbar Python ist nicht glücklich über das Copyright-Symbol, weil es davon ausgeht, dass die Quelldatei alles in ASCII ist. Entweder ich muss meine erste Linie machen:

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

Python sagen, ich bin mit Latin-Codierung, oder kann ich die Copyright-Vermerk ändern:

# Copyright: \xa9 2008 etc. 

, die nur möglicherweise nicht hat die gleiche rechtliche Stellung.

Gibt es eine elegantere Lösung?

+0

Was mit Angabe der Codierung ist das Problem? –

+2

Nun, es ist eine hässliche Linie am Anfang jeder Datei zu haben. Außerdem müssen meine C++ - und JavaScript-Dateien keine Kodierung angeben, also warum sollten meine Python-Einsen? –

Antwort

33

Das Copyright-Symbol in ASCII ist (c) oder "Copyright" geschrieben.

Siehe Circular 61, Copyright Registration for Computer Programs.

Zwar trifft es zu, dass der juristische Formalismus (siehe Zirkular 1, Copyright Basics) ist

The symbol © (the letter C in a circle), or the word “Copyright,” or the abbreviation “Copr.”; and...

Und es ist auch wahr, dass

To guarantee protection for a copyrighted work in all UCC member countries, the notice must consist of the symbol © (the word “Copyright” or the abbreviation is not acceptable)

Sie Kreis durch 3 graben und 38a.

Dies wurde jedoch bereits vor Gericht geprüft. Es ist kein interessantes Thema. Wenn Sie nach "(c) für c-in-a-circle" suchen, werden Sie feststellen, dass alle Anwälte zustimmen, dass (c) ein akzeptabler Ersatz ist. Siehe Perle und Williams. Siehe Scott zum IT-Recht.

+0

(c) ist kein rechtlich zulässiger Ersatz. Genau genommen können Sie es auch einfach weglassen. - http://desktoppub.about.com/cs/finetypography/ht/copyright_tm.htm – Deestan

+3

Sind Sie sicher? Ich habe gerade diese Ausgabe von Visual Studio bemerkt: Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. –

+1

http://www.copyright.gov/title17/92chap4.html Ich sehe nichts sagen (c) funktioniert nicht. Ich würde denken, dass eine Regierungsseite vertrauenswürdiger ist als about.com; schreibe es auf häufige Gerüchte/Missverständnisse – darkfeline

2

können Sie zurückkehren immer zu guten alten (c)

2

für Python 3k Warten, wo die Standard-Kodierung der Quelle UTF-8 sein?

+0

Oder benutze Python 2.2, bevor dies eingeführt wurde;) –

+0

Python 3K ist jetzt out :-) – bortzmeyer

8

Entgegen der angenommenen Antwort ist AFAIK (c) keine offiziell anerkannte Alternative zum Copyright-Symbol, obwohl ich mir nicht sicher bin, dass es vor Gericht getestet wurde.

Allerdings ist © nur eine Abkürzung des Wortes Copyright. Die Aussage "Copyright 2008 Robert Munro" ist identisch mit der Aussage "© 2008 Robert Munro"

Ihr "Copyright: © 2008 etc." Erweitert auf "Copyright: Copyright 2008 etc."

Wikipedia Seite scheint mit mir http://en.wikipedia.org/wiki/Copyright_symbol

In den Vereinigten Staaten, der Copyright-Vermerk besteht aus drei Elementen zustimmen: "Copr" 1. das Symbol ©, oder das Wort "Copyright" oder die Abkürzung ; ...

+0

Es wurde vor Gericht getestet. (c) ist ein akzeptabler Ersatz. –

1

Für Python 2 ist es die "richtige" Aufgabe, die Kodierung anzugeben oder niemals Nicht-ASCII-Zeichen zu verwenden. Die Angabe der Codierung macht es für den Compiler und für den Menschen einfacher. Tut mir leid, aber Python hat ursprünglich ASCII als Standard im Mittelalter angegeben.

Für Python 3 ist UTF-8 die Standardcodierung, also sollten Sie in Ordnung sein. In diesem Fall würde ich empfehlen, die Codierung nicht anzugeben, wenn Sie den Standardwert verwenden.

Ob eine Sprache eine Kodierungsspezifikation erlaubt/erfordert oder nicht, im Zeitalter von Unicode ist dies ein Problem, das wir bei jeder "Text" -Datei berücksichtigen müssen.

1

diese Zeile an die erste Stelle setzen:

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