diff --git a/plugins/RSS/plugin.py b/plugins/RSS/plugin.py index 11f6494a2..065486507 100644 --- a/plugins/RSS/plugin.py +++ b/plugins/RSS/plugin.py @@ -33,6 +33,7 @@ import types import socket import threading import re +import sys import supybot.conf as conf import supybot.utils as utils @@ -155,17 +156,22 @@ class RSS(callbacks.Plugin): if self.registryValue(dateconfig, channel): if headline[2]: pubDate = ' [%s]' % (headline[2],) - try: + if sys.version_info[0] < 3: + if isinstance(headline[0], unicode): + newheadlines.append(format('%s %u%s', + headline[0].encode('utf-8','replace'), + link, + pubDate)) + else: + newheadlines.append(format('%s %u%s', + headline[0].decode('utf-8','replace'), + link, + pubDate)) + else: newheadlines.append(format('%s %u%s', - headline[0], - link, - pubDate)) - except UnicodeDecodeError: - newheadlines.append(format('%s %u%s', - headline[0].decode('utf8', - 'replace'), - link, - pubDate)) + headline[0], + link, + pubDate)) return newheadlines def _newHeadlines(self, irc, channels, name, url): diff --git a/plugins/Web/plugin.py b/plugins/Web/plugin.py index 6b88800be..79c809ba5 100644 --- a/plugins/Web/plugin.py +++ b/plugins/Web/plugin.py @@ -153,10 +153,8 @@ class Web(callbacks.PluginRegexp): domain = utils.web.getDomain(url) title = utils.web.htmlToText(parser.title.strip()) if sys.version_info[0] < 3: - try: + if isinstance(title, unicode): title = title.encode('utf8', 'replace') - except UnicodeDecodeError: - pass s = format(_('Title: %s (at %s)'), title, domain) irc.reply(s, prefixNick=False) titleSnarfer = urlSnarfer(titleSnarfer) diff --git a/src/utils/str.py b/src/utils/str.py index 66f5ee01f..86a4c9f56 100644 --- a/src/utils/str.py +++ b/src/utils/str.py @@ -450,11 +450,17 @@ def format(s, *args, **kwargs): if char == 's': token = args.pop() if isinstance(token, str): - return token + if sys.version_info[0] < 3: + return token.decode('utf-8','replace') + else: + return token elif sys.version_info[0] < 3 and isinstance(token, unicode): - return token.encode('utf8') + return token.encode('utf8', 'replace') else: - return str(token) + if sys.version_info[0] < 3: + return str(token).decode('utf-8','replace') + else: + return str(token) elif char == 'i': # XXX Improve me! return str(args.pop())