Q: Cteni unicode retezcu ze souboru UTF-8 s BOM?

P

Petr Prikryl

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,997
Messages
2,570,240
Members
46,829
Latest member
KimberAlli

Latest Threads

Top