Найти - Пользователи
Полная версия: проблемы с кодировкой
Начало » Python для новичков » проблемы с кодировкой
1
andrey
пытаюсь написать парсер фидов 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)

Как исправить пообную ошибку? Заранее благодарен…
slivlen
Попробуй указать кодировку в скрипте.
pythonwin
попробуй так:

# -*- 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)
cybergrind

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

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

лично я непонимаю каким образом фидбернер умудрился перегнать страницу из утф8 в латин1 - но видимо такая у него по-умолчанию внутреняя кодировка
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB