Проблема кодирования символов с помощью Python 2.7 - PullRequest
0 голосов
/ 23 февраля 2012

Он отлично работает с обычными символами, но не работает с символами с акцентом, такими как é, à и т. Д ... Вот программа:

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')

, когда значение в базе данных содержит специальные символы, такие какé, à, ç (это не работает, я получаю следующее сообщение об ошибке: UnicodeEncodeError: кодек «ascii» не может кодировать символ u '\ xe9' в позиции 1: порядковый номер не в диапазоне (128)

Заранее спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Попробуйте

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

и т. Д. - ваши str() вызовы пытаются преобразовать юникод в строку байтов до того, как вы ее расшифровали.

0 голосов
/ 23 февраля 2012

Вы можете написать vraiamis.html в кодировке utf-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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...