2015-01-28 2 views
1

Я пытаюсь научиться использовать объявления кодирования в исходных файлах, читающих PEP 263, и я экспериментирую самостоятельно, но у меня есть некоторые проблемы.проблемы с объявлением кодировки в исходном файле

Вот мой файл cod.py:

# -*- coding: utf-16 -*- 
print('ciao') 

и я сохранил его с помощью UTF-16 кодировке; сейчас:

[email protected] ~/Scrivania $ python3 cod.py 
    File "cod.py", line 1 
SyntaxError: Non-UTF-8 code starting with '\xff' in file cod.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 

Поэтому я не понимаю, где я ошибаюсь.

P.S. Я использую gedit 2.30.4

ответ

0

UTF-16 не используется как кодировка для исходного кода Python. Из PEP 263 (раздел Концепции, пункт 1):

Любое кодирование, которое позволяет обрабатывать первые две строки в указанным выше способом допускается как кодирование исходного кода, это включает в себя ASCII совместимые кодировки, а также определенного многобайтовые кодировки, такие как Shift_JIS. Он не включает кодировки , которые используют два или более байта для всех символов, таких как , например. UTF-16. Причиной этого является сохранение алгоритма обнаружения кодирования в токенизаторе простым.

Ожидается, что вы получите ошибку: вы можете использовать другую кодировку (отличную от UTF-8 по умолчанию), если она может быть обнаружена Python.

+0

См. Также: http://stackoverflow.com/questions/26132121/which-file-encodings-are-supported-for-python-3-source-files –

+0

Одна вещь, которую я не понимаю, почему кто-то должен использовать объявление кодирования? Python 3.X по умолчанию использует utf-8, и я думаю, что сегодня каждый использует эту кодировку в своем файле – zer0uno

+0

@antox: да, если вы используете UTF-8, вам не нужно объявлять кодировку. Это только когда вы хотите, чтобы он был другим (по какой-то причине). –

Смежные вопросы