"文字列はunicode にしてからsqlite3モジュールに渡す" ようにすると
問題なくマルチバイト文字列に対応できる。
import sqlite3,sys,os
con = sqlite3.connect("./temp.sqlite")
#テーブル作成
sql = u"""
create table filepath(
id INTEGER PRIMARY KEY AUTOINCREMENT,
path text);"""
con.execute(sql)
#標準入力からファイルリストを受け取り
#DBに格納する
for rwln in iter(sys.stdin.readline,""):
path = rwln.rstrip('\n') #末尾改行を削除
sql = u"""insert into filepath(path) values (?); """
cur = self.con.cursor()
#ファイルシステムのエンコーディングはsys.getfilesystemencoding() で取得できるので
#これを使ってunicode()関数で変換後にsqliteモジュールに渡す
cur.execute(sql,(unicode(path, sys.getfilesystemencoding()),))
この方法以外にもbase64変換後に格納する事もできるけど、
エンコーディングが特定出来る場合はunicodeにしとくのが良い。