Petr Přikryl píše v Út 07. 06. 2011 v 14:07 +0200: > > "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ů.
Když už jsme u těch řetězců: jak se udělá raw unicode řetězec, tj. interpret neinterpretuje uvnitř? Generuju si latexový dokument a on se přirozeně vzteká na: hlavicka = ur""" \documentclass[a4,landscape]{article} \usepackage{graphicx} \usepackage[czech]{babel} \usepackage[utf8]{inputenc} \begin{document} \thispagestyle{empty} """ print hlavicka SyntaxError: (unicode error) 'rawunicodeescape' codec can't decode bytes in position 39-40: truncated \uXXXX _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python