Ahoj všeci, Tak nějak prakticky poprvé se dostávám k tomu, jak přečíst unicode řetězce ze souboru, který je uložen ve formátu UTF-8 se signaturou na začátku (BOM). Nějak se mi nedaří.
Mám takovýto soubor.txt v UTF-8 s BOM ===================================== První řádek. Druhý řádek. Třetí řádek. Příšerně žluťoučký kůň úpěl ďábelské ódy. ===================================== ... a pustím skript ===================================== import codecs f = codecs.open('soubor.txt', 'r', 'utf-8') for line in f: print repr(line) print line[1:] f.close() ===================================== Výsledek vypadá takto ===================================== C:\tmp>python a.py u'\ufeffPrvn\xed \u0159\xe1dek.\r\n' První řádek. u'Druh\xfd \u0159\xe1dek.\r\n' ruhý řádek. u'T\u0159et\xed \u0159\xe1dek.\r\n' řetí řádek. u'P\u0159\xed\u0161ern\u011b \u017elu\u0165ou\u010dk\xfd k\u016f\u0148 \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.\r\n' říšerně žluťoučký kůň úpěl ďábelské ódy. ===================================== Všimněte si, že na prvním řádku je \ufeff, což je Byte Order Mark, který se tam vůbec nemá objevit. Jeví se mi to jako chyba. Na všech řádcích záměrně nevypisuji printem první znak, protože u toho prvního řádku to krachne (což je pochopitelné). Řešil někdo něco podobného? Musí se BOM ukousávat ve vlastní režii? Díky, pepr -- http://mail.python.org/mailman/listinfo/python-list