2016-11-18 14 views
2

私はこのタスク+ライブラリfdbのためにPython 3.5を使用します。マイスクリプト:データベース内Python 3.5経由でFirebird 2.5からpdf/jpgファイルを入手するには?

UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 578: character maps to <undefined>

エンコーディングフィールド:私はエラーが表示さ

import fdb 
con = fdb.connect(
    host='host', database='database', 
    user='IAKUZNETSOV', password='111111' 
) 
cur = con.cursor() 
cur.execute("select DATA from ATTACHMENTS where OID = '6512165313'") 
fileToSave= cur.fetchone()[0] 
with open('c:\\python5.jpg', 'wb') as f: 
    f.write(fileToSave) 

ファイルを保存しようとした後のWin-1251タイプ:ブロブ。

どうすれば修正できますか?

+1

blobサブタイプとは何ですか? "1"(テキスト)の場合、サブタイプ0 - バイナリデータに変更します。 Allwaysは、サブタイプ0(バイナリデータ)を使用して、画像、ビデオ、オーディオなどを格納します。 –

+0

BlobサブタイプはTextです。データベースでこれらの設定を変更することはできません。 –

答えて

0

このエラーは、BLOBフィールドのサブタイプ1(テキスト)のために発生します。

subtypesは以下のとおりです。

0 - binary data (image, video, audio, whatever)

1 - text (basiccharacter functions work)

2 - BLR (used for definitions of Firebird procedures, triggers, etc.)

User applications should only use subtypes 0 and 1.

あなたが0にサブタイプを変更することができない場合は、クライアントアプリケーションに、生のバイトにデータを変換しようとするかもしれません。

関連する問題