[python] Tisk unicode řetězce a tisk seznamu unicode řetězců
Petr Přikryl
prikryl na atlas.cz
Úterý Červen 7 14:07:26 CEST 2011
> "David Rohleder"
> Petr Přikryl píše
> > Jak píše Tomáš. Jakmile si začneš s texty s diakritikou,
> > vždycky je lepší používat Unicode řetězce (i když je otrava
> > psát před literály u a dávat [...]
>
> a není ta definice na začátku
> # -*- coding: utf-8 -*-
> ekvivalentní u"řetězec"?
Není. Ta definice na začátku souboru jen říká interpretu, jak
má interpretovat znaky ve zdrojovém textu. Neříká nic dalšího
o tom, co se s nimi děje u starých řetězců (bez u na začátku).
Pokud je zdrojový text v utf-8, pak i v paměti bude v řetězcovém
objektu stejná posloupnost bajtů, jako v souboru. V řetězcovém
objektu ale není nikde informace o kódování -- ta existuje
mimo objekty a má charakter dohody. (Každý soubor může
používat jiný způsob kódování. Nevím o způsobu, jak by se dalo
v pythonovském programu zpětně zjistit, v jakém kódování
byl uveden zdrojový text -- ale možná něco takového je.)
Teprve když použiteš unicode řetězec, přehrká interpret
při překladu posloupnost bajtů z literálu za pomocí informace
z # -*- coding: ... -*- na posloupnost abstraktních unicode znaků.
V Pythonu 3 už se prefix u psát nemusí -- všechny řetězcové
literály se převádějí na unicode řetězce. Unicode řetěze nevyužívá
žádné kódování. Je to prostě unicode řetězec.
P.
Další informace o konferenci Python