Подтвердить что ты не робот

Когда использовать utf8 в качестве заголовка в файлах py

Некоторые исходные файлы из загруженного кода имеют следующий заголовок

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

У меня есть идея, что такое кодировка utf-8, но зачем она нужна в качестве заголовка в исходном файле python?

4b9b3361

Ответ 1

где вам нужно использовать в своих кодах символы, которые не относятся к ascii, например:

ă 

интерпретатор будет жаловаться, что он не понимает, что char.

Обычно это происходит, когда вы определяете константы.

Пример: Добавить в x.py

print 'ă'

затем запустите консоль python

import x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "x.py", line 1
 SyntaxError: Non-ASCII character '\xc4' in file x.py on line 1, 
   but no encoding declared;
   see http://www.python.org/peps/pep-0263.html for details

Ответ 2

Всегда используйте UTF-8 и убедитесь, что ваш редактор также использует UTF-8. Начните свой Python script следующим образом, если вы используете Python 27:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

Это хорошая запись в блоге от Nick Johnson о Python и UTF-8:

http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python Кстати, этот пост был написан до того, как он мог использовать:

from __future__ import unicode_literals

Ответ 3

При использовании символов, отличных от ascii. Например, когда я комментирую свой источник в норвежском, если charachters ØÆÅ встречаются в .py, он будет жаловаться, а не "компилировать".

Ответ 4

Всякий раз, когда текст читается или записывается, кодировки вступают в игру. Всегда. Интерпретатор python должен прочитать ваш файл как текст, чтобы понять его. Единственная ситуация, когда вы можете уйти, не имея дело с кодировками, - это когда вы используете только символы в диапазоне ASCII. Интерпретатор может в этом случае использовать практически любую кодировку в мире и получить ее правильно, потому что почти все кодировки кодируют эти символы в одни и те же байты.

Вы не должны использовать coding: utf-8 только потому, что в вашем файле есть символы за пределами ascii, это может быть даже вредно. Это подсказка для интерпретатора python, чтобы сказать, в какой кодировке находится ваш файл. Если вы не настроили текстовый редактор, текстовый редактор, скорее всего, не сохранит ваши файлы в utf-8. Итак, теперь подсказка, которую вы дали интерпретатору python, неверна.

Поэтому вы должны использовать его, когда ваш файл закодирован в utf-8. Если он закодирован в windows-1252, вы должны использовать coding: windows-1252 и т.д.

Ответ 5

Более прямой ответ:

В Python 3+: вам не нужно объявлять. UTF-8 используется по умолчанию. Убедитесь, что файл закодирован в UTF-8. Некоторые редакторы Windows не имеют его по умолчанию. Это не повредит объявить это, и некоторые редакторы могут использовать это.

В Python 2: всегда. По умолчанию зависит от ОС.

И помните: это только ваши файлы исходного кода. Сейчас в третьем тысячелетии строковый тип больше не существует. Вы должны позаботиться о типе текста, который представляет собой последовательность байтов и кодировку. Вам все равно придется определять кодировку во всех операциях ввода и вывода. Эти операции по-прежнему будут зависеть от вашей среды, поэтому все же лучше следовать правилу: явное лучше, чем неявное.