Включение символа авторского права в файл Python

Мне нужно включить заявление об авторских правах в верхнюю часть каждого создаваемого мной исходного файла Python:

#   Copyright: © 2008 etc.

Однако, когда я запускаю такой файл, я получаю следующее сообщение:

SyntaxError: не-ASCII-символ '\ xa9' в файле MyFile.py в строке 3, но не объявлена ​​кодировка; подробности см. в http://www.python.org/peps/pep-0263.html.

По-видимому, Python не устраивает символ авторского права, потому что он предполагает, что исходный файл находится полностью в ASCII. Либо мне нужно, чтобы моя первая строка была:

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

чтобы сообщить Python, что я использую латинскую кодировку, или я могу изменить заявление об авторских правах на:

#   Copyright: \xa9 2008 etc.

который, возможно, не имеет такого же юридического статуса.

Есть ли более элегантное решение?

В чем проблема с указанием кодировки?

Vinko Vrsalovic 21.10.2008 14:20

Что ж, это уродливая строчка в верхней части каждого файла. Кроме того, в моих файлах C++ и JavaScript не требуется указывать кодировку, так почему же мои файлы Python?

Charles Anderson 22.10.2008 12:38
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
16
2
20 134
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Символ авторского права в ASCII пишется как (c) или «Copyright».

См. Циркуляр 61, Регистрация авторских прав на компьютерные программы.

Хотя это правда, что правовой формализм (см. Циркуляр 1, Основы авторского права)

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

И это также правда, что

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)

Можно копать круговые 3 и 38а.

Однако это уже было проверено в суде. Это не интересная проблема. Если вы выполните поиск по запросу «(c) приемлемо для c-in-a-circle», вы обнаружите, что все юристы согласны с тем, что (c) является приемлемой заменой. См. Перла и Уильямса. См. Скотт о законе об информационных технологиях.

(c) не является юридически действительной заменой. Строго говоря, вы могли бы это оставить. - desktoppub.about.com/cs/finetypography/ht/copyright_tm.htm

Deestan 21.10.2008 15:03

Ты уверен? Я только что заметил этот вывод Visual Studio: Copyright (C) Microsoft Corporation. Все права защищены.

Charles Anderson 21.10.2008 15:35
copyright.gov/title17/92chap4.html Я ничего не вижу, говоря, что (c) не работает. Я думаю, что правительственный сайт заслуживает большего доверия, чем about.com; списать это на распространенные слухи / заблуждения
darkfeline 20.03.2013 08:08

Вы всегда можете вернуться к старому доброму (c)

Ожидание Python 3k, где кодировка источника по умолчанию будет UTF-8?

Или используйте Python 2.2, до того, как он был представлен;)

Tony Meyer 22.10.2008 06:11

Вопреки принятому ответу, AFAIK, (c) не является официально признанной альтернативой символу авторского права, хотя я не уверен, что он был протестирован в суде.

Однако © - это всего лишь сокращение от слова «Авторское право». Сказать «Авторское право 2008 Роберт Манро» - это то же самое, что сказать «© 2008 Роберт Манро»

Ваше "Авторское право: © 2008 и т. д." Расширяется до «Авторское право: Авторское право 2008 г. и т. д.»

Страница Википедии, похоже, со мной согласна http://en.wikipedia.org/wiki/Copyright_symbol

В США уведомление об авторских правах состоит из трех элементов: 1. символ ©, или же слово «Copyright» или сокращение «Copr.»; ...

Это было проверено в суде. (c) является приемлемой заменой.

S.Lott 21.10.2008 17:24

Для Python 2 «правильный» вариант - указать кодировку или никогда не использовать символы, отличные от ASCII. Указание кодировки упрощает работу компилятора и людей. Извините, но Python изначально указывал ASCII по умолчанию еще в темные века.

Для Python 3 кодировка по умолчанию - UTF-8, так что все будет в порядке. В этом случае я бы рекомендовал не указывать кодировку, если вы используете значение по умолчанию.

Независимо от того, допускает ли язык / требует спецификацию кодировки или нет, в эпоху Unicode это проблема, которую мы должны иметь в виду для каждого «текстового» файла.

Сначала поместите эту строку:

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

Другие вопросы по теме