2012-08-16 61 views
1

通过Cgi脚本插入汉字到Sqlite3不适用于我。我可以使用查询浏览器工具从同一个数据库中插入和选择中文字符,但是当我使用python脚本时,它显示错误。这是我用于创建数据库汉字不支持通过CGI脚本的Sqlite3

CREATE TABLE registrations ( m_username VARCHAR PRIMARY KEY COLLATE 'BINARY', m_identity VARCHAR, m_updatetime DATETIME );

查询,然后这是CGI脚本我已经使用了更新和选择值形成数据库

#! /Python26/python 
dbFile = 'D:/sqlite/registrations' 
import cgi 
import sqlite3 
import xml.sax.saxutils 

query = cgi.parse() 
db = sqlite3.connect(dbFile) 

user = query.get('username', [None])[0] 
identity = query.get('identity', [None])[0] 
friends = query.get('friends', []) 
print 'Content-type: text/plain\n\n<?xml version="1.0" encoding="utf-8"?>\n' 

print "<result>" 

if user: 
try: 
    c = db.cursor() 
    c.execute("insert or replace into registrations values (?, ?,  datetime('now'))", (user, identity)) 
    print "\t<update>true</update>" 
except: 
    print '\t<update>false</update>' 

for f in friends: 
print "\t<friend>\n\t\t<user>%s</user>" % (xml.sax.saxutils.escape(f),) 
c = db.cursor() 
c.execute("select m_username, m_identity from registrations where m_username = ? and m_updatetime > datetime('now', '-1 hour')", (f,)) 
for result in c.fetchall(): 
    eachIdent = result[1] 
    if not eachIdent: 
     eachIdent = "" 
    print "\t\t<identity>%s</identity>" % (xml.sax.saxutils.escape(eachIdent),) 
    if f != result[0]: 
     print "\t\t<registered>%s</registered>" % (xml.sax.saxutils.escape(result[0]),) 
print "\t</friend>" 
db.commit() 

print "</result>" 

我想,我需要设置CHARSET为UTF-8的东西,但我不知道该怎么做。我被Google搜索了,但找不到解决此问题的好方法。请有人帮助我。

+0

”这是显示错误。“真棒。感觉像分享? – 2012-08-16 03:49:32

+1

这个问题并不是真的,但是,请先生,请使用框架。 – 2012-08-16 03:49:34

回答

0

我已经通过客户端完成了这项工作。我只是使用EncodeBase64编码中文数据并发送到数据库。我认为,这不是直接的方式。但我找不到任何其他方式。 “