2017-01-28 16 views
0

インポートに関する別の質問がありますが、別の問題が発生しました。ここでは、コードだ、DBFインポートCharmapエラーPython

"C:\Program Files\Anaconda2\python.exe" D:/Projects/DBFImport/DBFImporter/extractdbf.py 
Traceback (most recent call last): 
    File "D:/Projects/DBFImport/DBFImporter/extractdbf.py", line 17, in <module> 
for record in table.records: 
    File "C:\Program Files\Anaconda2\lib\site-packages\dbfread\dbf.py", line 316, in _iter_records 
for field in self.fields] 
    File "C:\Program Files\Anaconda2\lib\site-packages\dbfread\field_parser.py", line 79, in parse 
return func(field, data) 
    File "C:\Program Files\Anaconda2\lib\site-packages\dbfread\field_parser.py", line 157, in parseM 
return self.decode_text(memo) 
    File "C:\Program Files\Anaconda2\lib\site-packages\dbfread\field_parser.py", line 45, in decode_text 
return decode_text(text, self.encoding, errors=self.char_decode_errors) 
    File "C:\Program Files\Anaconda2\lib\encodings\cp1252.py", line 15, in decode 
return codecs.charmap_decode(input,errors,decoding_table) 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 278: character maps to <undefined> 

を私はDBFファイルからデータをインポートしようとしている、ほとんどのDBFファイルが動作している間、私は私に次のエラーを与えているものに走った、それは、

簡単な分析のために非常に簡単です
import pyodbc, os, string 
from dbfread import DBF 

# SQL Server Connection Test 
cnxn = pyodbc.connect('DRIVER={SQLServer};SERVER=***********;DATABASE=TEST_DBFIMPORT;UID=test;PWD=test') 
cursor = cnxn.cursor() 

table = DBF('E:\\Backups\\imp.dbf', lowernames=True) 
for record in table.records: 
    rec1 = record['id'] 
    cursor.execute ("insert into imp(ID) values(?)", rec1) 
cnxn.commit() 

私はすべての種類のデコードを試みましたが、何も動作していないようです。

アップデート1:

<type 'tuple'>: (<type 'exceptions.UnicodeDecodeError'>, UnicodeDecodeError('charmap', 'Firearms as appraised on May 18, 2011. F.I.E (Firearms Import Export Co.) .26 automatic pistol S/N # AS21212 ----------------- $175.00 Walther (Smith & Wesson) P22, 22LR semi automatic pistol S/N # N052010 -------------- $325.00 Taurus .357 Magnum Model 608 revolver, blue,, 4\xe2\x80\x9d vent rib barrel S/N # LF632765 ------------ $375.00 Colt MKII Series 70 semi automatic pistol, 9mm, blue, pacmeyer grips, S/N # 70S49671 -------- $475.00 Ruger Model 10/22 semi-automatic carbine, 22LR, S/N # 126-90774 ----- $200.00', 278, 279, 'character maps to <undefined>'), None) 
+0

'latin1'を試しましたか? –

+0

私はこれを試してみます、それは私が前に経験したことのない奇妙な問題です。 – HMan06

+0

特定のフォーマットはありますか?またはデコードする方法は?私は別の方法でそれを開こうとしましたが、うまくいかず、テーブルに挿入せずにレコードを読み込むだけでもエラーになります。 – HMan06

答えて

1

Unicodeマッピングを持っていないが、いくつかのコードポイント(3、私は思う)ので、あなたがエラーを取得している - 彼らはちょうど空白です。エンコーディングを無効にするには

print table 

:あなたは、テーブルを印刷することで、テーブル自体で指定されたファイルのエンコーディングを見ることができます

table = dbf.Table('e:/Backups/imp.dbf') # forward slash and backslash both work 

:あなたは、通常のファイルを開くだろう、私のdbfライブラリを使用して

テーブル自体に指定されています:

table = dbf.Table('e:/Backups/imp.dbf', codepage='...') 

コードページに'utf8'を使用して試してみることができます。dbf仕様の一部ではありませんが、役立つかもしれません(私は自分自身のために追加しました。

+0

ありがとう! – HMan06

関連する問題