[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