お世話になっております。
SQLiteに保存したpngデータを取得して書き込みを行うプログラムを作成したいのですが、
以下のコードですと、文字化けが発生してしまいます。
Python
1 1 import sys 2 2 import struct 3 3 import sqlite3 4 4 import codecs 5 5 import types 6 6 7 7 8 8 dbname = 'test.sqlite3' 9 9 10 10 conn = sqlite3.connect(dbname) 11 11 c = conn.cursor() 12 12 13 13 outfile = open("new.png", 'w') 14 14 < 15 15 select_sql = 'SELECT * FROM images WHERE id="1"' 16 16 for row in c.execute(select_sql): 17 17 18 18 19 19 print(row[0]) # ID 20 20 print(row[1]) # "test" 21 21 print(row[2]) # ここにpng画像をバイナリにして格納されたものがある 22 22 print(row[3]) # create 23 23 24 24 25 25 outfile.write(tmp)<
そして出力は以下のようになります
1 test �PNG IHD���� IDAcXϰ�_��IEND�B`� 2017-06-20 19:32:25.593800
どうやらここだけ(row[2])勝手にバイナリが何かしらの文字コードに変更されているみたいです。
どうか、ご享受おねがいします。
バイナリを格納しているのですから、バイナリを表示して化けるのは当然かと思います。