Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2008 15:54:29

andrey
От:
Зарегистрирован: 2008-06-30
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой

пытаюсь написать парсер фидов c помощью feedparser'a при обработки некоторых фидов возникает вот такая ошибка:

Traceback (most recent call last):
File “test.py”, line 17, in <module>
sql = “UPDATE `feed` SET `feed_title` ='%s' AND `feed_description` ='%s' WHE
RE `feed_id` =%s” % (conx.escape_string(f.feed.get('title','')), conx.escape_str
ing(f.feed.get('description','')),'210')
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-4: ordin
al not in range(128)


Собственно сам код.

import feedparser, MySQLdb as db
conx = db.connect (host = “localhost”,user = “root”,passwd = “”,db = “db_test_feed”)
db_cursor = conx.cursor ()
db_cursor.execute('SET NAMES utf8')
db_cursor.execute('SET CHARACTER SET utf8')
f = feedparser.parse('http://feeds.feedburner.com/Radio-t')
sql = “UPDATE `feed` SET `feed_title` ='%s' AND `feed_description` ='%s' WHERE `feed_id` =%s” % (conx.escape_string(f.feed.get('title','')), conx.escape_string(f.feed.get('description','')),'210')
print sql
db_cursor.execute(sql)

Как исправить пообную ошибку? Заранее благодарен…



Офлайн

#2 Июнь 30, 2008 17:58:54

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой

Попробуй указать кодировку в скрипте.



Офлайн

#3 Июль 1, 2008 06:19:48

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой

попробуй так:

# -*- coding: utf-8 -*-
import feedparser, MySQLdb as db
conx = db.connect (host = “localhost”,user = “root”,passwd = “”,db = “db_test_feed”)
db_cursor = conx.cursor ()
db_cursor.execute('SET NAMES utf8')
db_cursor.execute('SET CHARACTER SET utf8')
f = feedparser.parse('http://feeds.feedburner.com/Radio-t')
sql = u“UPDATE `feed` SET `feed_title` ='%s' AND `feed_description` ='%s' WHERE `feed_id` =%s” % (conx.escape_string(f.feed.get('title','')), conx.escape_string(f.feed.get('description','')),'210')
print sql
sql = sql.encode('utf-8')
db_cursor.execute(sql)



Офлайн

#4 Июль 1, 2008 12:34:11

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

проблемы с кодировкой


#так должно быть по идее
f.feed.get('description','').decode('utf8')

#так в реале
f.feed.get('description','').decode('latin1')

лично я непонимаю каким образом фидбернер умудрился перегнать страницу из утф8 в латин1 - но видимо такая у него по-умолчанию внутреняя кодировка



Отредактировано (Июль 1, 2008 12:43:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version