Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 12, 2009 17:49:02

Shecspi
От:
Зарегистрирован: 2009-01-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Указание кодировки

Многие скрипты в начале файла содержат следующую строку:

# -*- coding: utf-8 -*-
Вроде бы здесь всё понятно, но зачем нужны магические сиволы “-*-”? Ведь интерпретатор обращает внимание только на директиву coding. Лично я пишу просто
# coding: utf-8
Так зачем же вы используете магию?



Офлайн

#2 Янв. 12, 2009 18:46:59

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Указание кодировки

Так красивее :)



Офлайн

#3 Янв. 12, 2009 19:13:03

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Указание кодировки

Гвидо ван Россум
2.2.3 Source Code Encoding

It is possible to use encodings different than ASCII in Python source files. The best way to do it is to put one more special comment line right after the #! line to define the source file encoding:


# -*- coding: encoding -*-


With that declaration, all characters in the source file will be treated as having the encoding encoding, and it will be possible to directly write Unicode string literals in the selected encoding. The list of possible encodings can be found in the Python Library Reference, in the section on codecs.

For example, to write Unicode literals including the Euro currency symbol, the ISO-8859-15 encoding can be used, with the Euro symbol having the ordinal value 164. This script will print the value 8364 (the Unicode codepoint corresponding to the Euro symbol) and then exit:


# -*- coding: iso-8859-15 -*-

currency = u“€”
print ord(currency)


If your editor supports saving files as UTF-8 with a UTF-8 byte order mark (aka BOM), you can use that instead of an encoding declaration. IDLE supports this capability if Options/General/Default Source Encoding/UTF-8 is set. Notice that this signature is not understood in older Python releases (2.2 and earlier), and also not understood by the operating system for script files with #! lines (only used on Unix systems).

By using UTF-8 (either through the signature or an encoding declaration), characters of most languages in the world can be used simultaneously in string literals and comments. Using non-ASCII characters in identifiers is not supported. To display all these characters properly, your editor must recognize that the file is UTF-8, and it must use a font that supports all the characters in the file.



Офлайн

#4 Янв. 12, 2009 21:26:42

Shecspi
От:
Зарегистрирован: 2009-01-01
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Указание кодировки

Но откуда взялись эти -*-? Ведь в эту строку можно любые символы посторонние вставлять, скрипт будет работать, как будто так и нужно.



Офлайн

#5 Янв. 12, 2009 21:51:38

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Указание кодировки

это всего-лишь emacs-style
pep 236 читай

Офлайн

#6 Янв. 12, 2009 23:39:55

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Указание кодировки

Shecspi
Респект за вопрос. Юзал и такой вариант и такой и не задумывался, почему =)
Теперь буду юзать только упрощенный =)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version