2012-04-12 5 views
10

Ich habe eine .csv-Datei in UTF-8 codiert, die sowohl lateinische und kyrillische Symbole enthält.UTF-8-Datei mit Codecs in IronPython lesen

;F1;F2;abcdefg3;F200 
;ABSOLUTE;NOMINAL;NOMINAL;NOMINAL 
o1;1;USA;Новосибирск;1223 

Ich versuche folgende Skript in Ironpython 2.7.1 auszuführen:

import codecs 

f = codecs.open(r"file.csv", "rb", "utf-8") 
f.next() 

Während der Ausführung f.next() eine Ausnahme auftritt:

Traceback (most recent call last): 
    File "c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\1.1\visualstudio_py_repl.py", line 492, in run_file_as_main 
    code.Execute(self.exec_mod) 
    File "<string>", line 4, in <module> 
    File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 684, in next 
    return self.reader.next() 
    File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 615, in next 
    line = self.readline() 
    File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 530, in readline 
    data = self.read(readsize, firstline=True) 
    File "C:\Program Files\IronPython 2.7.1\Lib\codecs.py", line 477, in read 
    newchars, decodedbytes = self.decode(data, self.errors) 
UnicodeEncodeError: ('unknown', '\x00', 0, 1, '') 

Bei der Zur gleichen Zeit in CPython 2.7 funktioniert das Skript korrekt. Auch in der IronPython 2.7.1 funktioniert folgendes Skript:

Wer weiß, was so seltsames Verhalten verursachen kann?

Antwort

2

Sieht aus wie es ein Fehler in sein könnte, wie next() Codecs verarbeitet. Können Sie bitte open an issue mit den zu reproduzierenden Dateien anhängen?

0

Mai mit "rb" Parameter Schwierigkeiten, versuchen zu verwenden, 'r'

f = codecs.open(r"file.csv", "r", "utf-8") 
+0

Ich habe versucht, "b" zu entfernen. Ausnahme verschwand, aber kyrillische Symbole wurden falsch dekodiert. Gemäß der Dokumentation nimmt StreamReader außerdem einen Stream, der ein dateiähnliches Objekt sein muss, das zum Lesen von (binären) Daten geöffnet ist. – usahara