Bu nereden geliyor: - * - kodlama: utf-8 - * -


135

Python aşağıdakileri dosyanın kodlamasını tanımlayan talimat olarak tanır:

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

Kesinlikle bu tür talimatları daha önce gördüm ( -*- var: value -*-). Nereden geliyor? Tam özellik nedir, örneğin değer boşlukları, özel sembolleri, yeni satırları ve hatta -*-kendisini içerebilir mi?

Programım düz metin dosyaları yazıyor olacak ve bu biçimi kullanarak bazı meta verileri eklemek istiyorum.


3
Bunu hatırlamak daha kolay ve editörüm PyCharm'da çalışıyor. # coding: utf-8
crizCraig

2
Kullanılması # coding: utf8bile dışarıda pycharm arasında Python 2.7 ile kutunun dışında eserlerini. (SublimeText kullanıyorum).
Basj


1
@Cbhihe Bu soru Python ile ilgili değil, talimatın ne yaptığı veya nasıl çalıştığı hakkında değil. Hangi Python öncesi yazılımın onu icat ettiğini ve sadece dosya kodlamasından daha fazlası olup olmadığını soruyor.
hamstergene

Yanıtlar:


89

Bir Python dosyasının kodlamasını belirtmenin bu yolu PEP 0263 - Python Kaynak Kodu Kodlamalarını Tanımlama'dan gelir .

Aynı zamanda GNU Emacs tarafından tanınır ( Python Dil Başvurusu, 2.1.4 Kodlama bildirimleri ), ancak bu sözdizimini kullanan ilk program olup olmadığını bilmiyorum.


4
Emacs kılavuzundan sonuca
varabildiğim kadarıyla

Pep bağlantısı için teşekkürler. Daha önce direktifin sadece metin editörü tarafından kullanıldığı izlenimindeydim. Şimdiye kadar, dosyanın ilk iki satırında varsa, python yorumlayıcısının yorumu gerçekten ayrıştırdığını asla bilmiyordum.
umeboshi



4

PyCharm'da bunu dışarıda bırakardım. Alttaki UTF-8 göstergesini kodlamanın sabit kodlanmış olduğunu belirten bir uyarı ile kapatır. Yukarıda belirtilen PyCharm yorumuna ihtiyacınız olduğunu düşünmeyin.


aslında, test1 = 'äöü'böyle bir satır koyarsam, dosyaya böyle bir başlık eklemenizi önerir. (pycharm 2019.1)
Cutton Eye

@Cutton Eye Python 2 veya 3 ile mi?
Boris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.