2012-02-23 44 views
0

它正常工作与普通字符,但它不喜欢E 重音字符,等工作... 下面是程序:与Python Probleme编码字符2.7

def search(): 
    connection = sqlite3.connect('vocab.sqlite') 
    cursor = connection.cursor() 
    sql = "SELECT French, English value FROM Ami " 
    cursor.execute(sql) 
    data = cursor.fetchall() 
    data=sorted(data) 
    file_open=open('vraiamis.html','w') 
    for i in data: 
     a='<a href="'+'http://www.google.fr/#hl=fr&gs_nf=1&cp=4&gs_id=o&xhr=t&q=' 
     a=a+str(i[0]).encode('latin-1')+'">'+str(i[0]).encode('latin-1')+'</a>'+'<br>' 
     file_open.write(a) 

file_open.close() 
webbrowser.open('vraiamis.html') 

当值数据库中包含特殊字符,如E,A,C(它不工作,我得到了以下错误消息: UnicodeEncodeError:“ASCII”编解码器不能编码字符U“\ xe9”在位置1:有序不在范围内( 128)

在此先感谢您的帮助

回答

2

尝试

a=a+i[0].encode('latin-1')+'">' + i[0].encode('latin-1')+'</a>'+'<br>' 

等等 - 你str()电话正试图将Unicode字符转换成一个字节串你解码它。

+0

感谢,这是它工作正常 – user1119429 2012-02-24 16:21:26

0

你可以写你的vraiamis.htmlutf-8编码,让您的特殊字符进行编码。

def search(): 
    import codecs 
    connection = sqlite3.connect('vocab.sqlite') 
    cursor = connection.cursor() 
    sql = "SELECT French, English value FROM Ami " 
    cursor.execute(sql) 
    data = cursor.fetchall() 
    data=sorted(data) 
    file_open= codecs.open('vraiamis.html', 'w', encoding='utf-8') 
    for i in data: 
     a=u'<a href="' + u'http://www.google.fr/#hl=fr&gs_nf=1&cp=4&gs_id=o&xhr=t&q=' 
     a=a + i[0] + u'">' + i[0] + u'</a>' + u'<br>' 
     file_open.write(a) 
    file_open.close() 
    webbrowser.open('vraiamis.html') 
+0

很抱歉,但编码不工作就非常有用返回一条错误消息 – user1119429 2012-02-24 16:21:56