<br><font size=2 face="sans-serif">Je to zjavne bug - tu sa o tom docitas:
http://evanjones.ca/python-utf8.html</font>
<br>
<br><font size=2 face="sans-serif">Takze BOM treba odrezat rucne:</font>
<br><font size=2 face="Courier New">--------------------------------------------------</font>
<br><font size=2 face="Courier New"># -*- coding: cp1250 -*-</font>
<br><font size=2 face="Courier New">import codecs</font>
<br><font size=2 face="Courier New">bom = unicode( codecs.BOM_UTF8, &quot;utf8&quot;
)</font>
<br><font size=2 face="Courier New">print &quot;BOM = %s&quot; % &nbsp;repr(bom)</font>
<br><font size=2 face="Courier New">f = codecs.open('soubor.txt', 'r',
'utf-8')</font>
<br><font size=2 face="Courier New">for line in f:</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; #print &quot;line[0]=
%s&quot; % repr(line[0]) &nbsp; &nbsp; &nbsp; &nbsp;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; if line[0] == unicode(
codecs.BOM_UTF8, &quot;utf8&quot; ):</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp;l=line.lstrip(unicode(
codecs.BOM_UTF8, &quot;utf8&quot; ))</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; else:</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp;l = line</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; print repr(l)</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; print l[1:]</font>
<br><font size=2 face="Courier New">f.close()</font>
<br><font size=2 face="Courier New">--------------------------------------------------</font>
<br>
<br><font size=2 face="sans-serif">Vysledok skriptu:</font>
<br><font size=2 face="Courier New">BOM = u'\ufeff'</font>
<br><font size=2 face="Courier New">u'\r\n'</font>
<br>
<br>
<br><font size=2 face="Courier New">u'Prvn\xed \u0159\xe1dek.\r\n'</font>
<br><font size=2 face="Courier New">rvní řádek.</font>
<br>
<br><font size=2 face="Courier New">u'Druh\xfd \u0159\xe1dek.\r\n'</font>
<br><font size=2 face="Courier New">ruhý řádek.</font>
<br>
<br><font size=2 face="Courier New">u'T\u0159et\xed \u0159\xe1dek.\r\n'</font>
<br><font size=2 face="Courier New">řetí řádek.</font>
<br>
<br><font size=2 face="Courier New">u'P\u0159\xed\u0161ern\u011b \u017elu\u0165ou\u010dk\xfd
k\u016f\u0148 \xfap\u01</font>
<br><font size=2 face="Courier New">1bl \u010f\xe1belsk\xe9 \xf3dy.\r\n'</font>
<br><font size=2 face="Courier New">říšerně žluťoučký kůň úpěl
ďábelské ódy.</font>
<br>
<br>
<br><font size=2 face="sans-serif">Pozn.: Tvoj subor som vytvoril takto:</font>
<br><font size=2 face="Courier New">--------------------------------------------------</font>
<br><font size=2 face="Courier New"># -*- coding: cp1250 -*-</font>
<br><font size=2 face="Courier New">import codecs</font>
<br><font size=2 face="Courier New">out = file( &quot;soubor.txt&quot;,
&quot;w&quot; )</font>
<br><font size=2 face="Courier New">out.write( codecs.BOM_UTF8 )</font>
<br><font size=2 face="Courier New">unicodeString=\</font>
<br><font size=2 face="Courier New">u'''</font>
<br><font size=2 face="Courier New">První řádek.</font>
<br><font size=2 face="Courier New">Druhý řádek.</font>
<br><font size=2 face="Courier New">Třetí řádek.</font>
<br><font size=2 face="Courier New">Příšerně žluťoučký kůň úpěl
ďábelské ódy.</font>
<br><font size=2 face="Courier New">'''</font>
<br><font size=2 face="Courier New">out.write( unicodeString.encode( &quot;utf-8&quot;
) )</font>
<br><font size=2 face="Courier New">out.close()</font>
<br><font size=2 face="Courier New">--------------------------------------------------</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>&quot;Petr Prikryl&quot;
&lt;PrikrylP@skil.cz&gt;</b> </font>
<br><font size=1 face="sans-serif">Sent by: python-bounces@py.cz</font>
<p><font size=1 face="sans-serif">15.03.2007 07:52</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
Konference PyCZ &lt;python@py.cz&gt;</font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td valign=top><font size=1 face="sans-serif">&quot;Konference PyCZ&quot;
&lt;python@py.cz&gt;</font>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td valign=top>
<tr>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td valign=top><font size=1 face="sans-serif">[python] Q: Cteni unicode
retezcu ze souboru UTF-8 s BOM?</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>Ahoj všeci,<br>
<br>
Tak nějak prakticky poprvé se dostávám k tomu, <br>
jak přečíst unicode řetězce ze souboru, který<br>
je uložen ve formátu UTF-8 se signaturou<br>
na začátku (BOM). Nějak se mi nedaří.<br>
<br>
Mám takovýto soubor.txt v UTF-8 s BOM<br>
=====================================<br>
První řádek.<br>
Druhý řádek.<br>
Třetí řádek.<br>
Příšerně žluťoučký kůň úpěl ďábelské ódy.<br>
=====================================<br>
<br>
... a pustím skript<br>
=====================================<br>
import codecs<br>
f = codecs.open('soubor.txt', 'r', 'utf-8')<br>
for line in f:<br>
 &nbsp; &nbsp;print repr(line)<br>
 &nbsp; &nbsp;print line[1:]<br>
f.close()<br>
=====================================<br>
<br>
Výsledek vypadá takto<br>
=====================================<br>
C:\tmp&gt;python a.py<br>
u'\ufeffPrvn\xed \u0159\xe1dek.\r\n'<br>
První řádek.<br>
<br>
u'Druh\xfd \u0159\xe1dek.\r\n'<br>
ruhý řádek.<br>
<br>
u'T\u0159et\xed \u0159\xe1dek.\r\n'<br>
řetí řádek.<br>
<br>
u'P\u0159\xed\u0161ern\u011b \u017elu\u0165ou\u010dk\xfd k\u016f\u0148
\xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.\r\n'<br>
říšerně žluťoučký kůň úpěl ďábelské ódy.<br>
=====================================<br>
<br>
Všimněte si, že na prvním řádku je \ufeff, což je Byte Order Mark,
<br>
který se tam vůbec nemá objevit. Jeví se mi to jako chyba. <br>
Na všech řádcích záměrně nevypisuji printem první znak, <br>
protože u toho prvního řádku to krachne (což je pochopitelné).<br>
Řešil někdo něco podobného? Musí se BOM ukousávat ve vlastní režii?<br>
<br>
Díky, <br>
 &nbsp;pepr<br>
_______________________________________________<br>
Python mailing list<br>
Python@py.cz<br>
http://www.py.cz/mailman/listinfo/python<br>
</tt></font>
<br><font size=2 face="sans-serif"><br>
Mgr. Ing. Roman MIKLÓŠ <br>
Prvá stavebná sporiteľňa a.s. <br>
Bajkalská 30, P. O. Box 48 <br>
829 48 &nbsp;Bratislava 25 <br>
Tel.: +421/ 2 / 582 31 174 <br>
Fax: +421/ 2 / 582 31 109 <br>
</font>