[python] Rozpoznani kodovani editorem (bylo Problem s kodovanim PyDev...)

Petr Prikryl PrikrylP na skil.cz
Středa Leden 31 08:36:06 CET 2007


Pavel Kosina
> Dotaz: existuje editor který dokáže nastavit použité 
> kodovaní podle deklarovaného?

Asi jich bude víc. Poprvé jsem něco takového viděl v Emacsu.
Teď ale používám jEdit. Ten na prvních řádcích hledá sekvence, 
které interpretuje jako parametry editačního okna. 
Kódování se dá předepsat takto:

:encoding=utf-8:

Může to být uzavřeno i do komentáře, takže například pro
pythonovský program můžu na začátku uvést:

# -*- coding: utf-8 -*-
# :encoding=utf-8:

Ten první řádek je pro Python, ten druhý pro editor.

Pokud to jde, využívá se známých skutečností, které
kódování definují. Takže například editory, které
zvládají XML, berou kódování z XMLovského předpisu 
pro kódování:

<?xml version="1.0" encoding="UTF-8">

Docela spolehlivě se dá detekovat i kódování u UTF-16
(různých variant) a u varianty UTF-8, která má na začátku
speciální sekvenci (není to pravidlo). Některé editory
se snaží kódování detekovat podle frekvence výskytu
vybraných písmen, ale je to závislé na jazyku (lidském)
a dalších okolnostech.

Pokud má editor podporu konkrétního programovacího jazyka,
pak může postupovat podobně. Tak třeba jEdit umí podle 
přípony rozpoznat, že jde o pythonovský zdroják a přepne
na příslušný režim (zvýrazňování syntaxe atd.), ale 
používá se k tomu obecný mechanismus, který asi nepočítá
s takovými věcmi, jako detekce příslušné pythonovské
sekvence předepisující použité kódování ve zdrojovém 
souboru. Mohl by to ale umět nějaký pythonovský plugin. 
Jinými slovy, mělo by stačit, když se najde 

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

a měl by se obejít bez explicitně jEditovského

# :encoding=utf-8:

podobně, jako se to dělá v případě XML. Zkusím zjistit 
a vyptat se.

pepr

P.S. jEdit je fajn editor, ale Miloslavovi nebude vyhovovat,
     protože je psaný v Javě. Tímto jej vyzývám, aby 
     na jEdit nereagoval a nadále používal vim ;-)


Další informace o konferenci Python