2012-04-12 23 views
10

ラテン文字とキリル文字の両方の記号を含むUTF-8でエンコードされた.csvファイルがあります。IronPythonでコーデックを使用してUTF-8ファイルを読み取る

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

私はIronPythonの2.7.1で次のスクリプトを実行しようとしている:例外が発生した)(f.nextの実行中

import codecs 

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

:で

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, '') 

CPython 2.7と同じ時間にスクリプトは正しく動作します。また、IronPythonの2.7.1次のスクリプトでは正常に動作します:

import codecs 

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

誰がこのような奇妙な動作を引き起こす可能性が何を知っていますか?

答えて

2

はルックスは「r」を使用してみてください。再生するファイルを添付してopen an issueをお願いしますか?

0

は「RB」パラメータとのトラブルをしてもよいし、それはnext()はコーデックをどのように処理するかのバグかもしれないよう

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

"b"を削除しようとしました。例外は消えましたが、キリル記号は間違ってデコードされました。また、ドキュメントによれば、StreamReaderは、ストリーム(読み込み(バイナリ)データ用に開いたファイルのようなオブジェクトでなければなりません)を受け取ります。 – usahara

関連する問題