From 133db9e3bbb6862a2ea5e1c52a31b614ffdcd633 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Fri, 20 Mar 2015 11:18:18 -0500 Subject: [PATCH] fixed issue #757, rss2 with weird chars --- gluon/serializers.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gluon/serializers.py b/gluon/serializers.py index 97372773..59bfe888 100644 --- a/gluon/serializers.py +++ b/gluon/serializers.py @@ -174,12 +174,19 @@ def ics(events, title=None, link=None, timeshift=0, calname=True, s += '\nEND:VCALENDAR' return s +def safe_encode(text): + if not isinstance(text, (str, unicode)): + text = str(text) # yes this should always return bytes not unicode but who knows... + if isinstance(text, unicode): + text = text.encode(encoding, 'xmlcharrefreplace') + return text def rss(feed): if not 'entries' in feed and 'items' in feed: feed['entries'] = feed['items'] + def safestr(obj, key, default=''): - return str(obj[key]).encode('utf-8', 'replace') if key in obj else default + return safe_encode(obj.get(key,'')) now = datetime.datetime.now() rss = rss2.RSS2(title=safestr(feed,'title'),