使用Python Web界面从sqlite3 db写入/读取utf-8

时间:2013-09-08 14:06:48

标签: python unicode utf-8 sqlite

我有一个用户输入的文本字段,它使用Python脚本将数据添加到sqlite3数据库。但是一旦用户输入带有utf-8字符的文本,我的脚本就会中断:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 24: ordinal not in range(128)

由于db字符串条目都是unicode,我怀疑我的INSERT语句可能会导致问题,但是如何将utf-8字符从文本输入传递到sqlite3 db,而不将它们转换为%s字符串?这是我从textarea添加消息的方式:

c.execute("INSERT INTO messages VALUES ('%s', '%s', NULL)" % (threadinput , strip_html(newmessage)))

这是我从db打印消息的地方,引发了UnicodeError:

conn = sqlite3.connect('msg.db')
c = conn.cursor()
c.execute("SELECT * FROM messages WHERE thread ='%s' ORDER BY nr ASC" % threadinput)
rows = c.fetchall()
count = 1
for row in rows:
        print "<li>Message Nr. %s: %s</li>" % (count, row)
        count += 1
conn.close()

1 个答案:

答案 0 :(得分:2)

  

这是我从textarea添加消息的方式:

c.execute("INSERT INTO messages VALUES ('%s', '%s', NULL)" % (threadinput , strip_html(newmessage)))

你的问题! &LT; / adam_savage&GT;

c.execute("INSERT INTO messages VALUES (?, ?, NULL)", (threadinput , strip_html(newmessage)))