2016-11-18 6 views
2

이 태스크 + 라이브러리 fdb에 Python 3.5를 사용합니다. 내 스크립트를 데이터베이스에Firebird 2.5에서 Python 3.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) 

파일을 저장하려는 시도 후 윈 - 1251 유형 : 물방울.

어떻게 해결할 수 있습니까?

+1

블롭 하위 유형이란 무엇입니까? "1"(텍스트)이면 이진 데이터로 하위 유형 0으로 변경합니다. Allways 하위 형식 0 (이진 데이터)을 사용하여 이미지, 비디오, 오디오 등을 저장합니다. –

+0

BLOB 하위 유형은 텍스트입니다. 데이터베이스에서이 설정을 변경할 수 없습니다. –

답변

0

이 오류는 blob 필드의 하위 유형 1 (텍스트) 때문에 발생합니다.

subtypes

은 다음과 같습니다 : 0으로 하위 유형을 변경할 수없는 경우

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.

하면, 당신은 클라이언트 응용 프로그램에 원시 바이트로 데이터를 변환 할 수 있습니다.