[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