diff --git a/src/calibre/web/feeds/recipes/__init__.py b/src/calibre/web/feeds/recipes/__init__.py index 5a54021bb7..5dd143e846 100644 --- a/src/calibre/web/feeds/recipes/__init__.py +++ b/src/calibre/web/feeds/recipes/__init__.py @@ -57,10 +57,15 @@ def compile_recipe(src): _tdir = path(PersistentTemporaryDirectory('_recipes')) temp = _tdir/('recipe%d.py'%_crep) _crep += 1 + if not isinstance(src, unicode): + match = re.search(r'coding[:=]\s*([-\w.]+)', src[:200]) + enc = match.group(1) if match else 'utf-8' + src = src.decode(enc) f = open(temp, 'wb') + src = '# coding=utf-8\n' + src src = 'from %s.web.feeds.news import BasicNewsRecipe, AutomaticNewsRecipe\n'%__appname__ + src src = 'from %s.ebooks.lrf.web.profiles import DefaultProfile, FullContentProfile\n'%__appname__ + src - f.write(src.replace('from libprs500', 'from calibre')) + f.write(src.replace('from libprs500', 'from calibre').encode('utf-8')) f.close() module = imp.find_module(temp.namebase, [temp.dirname()]) module = imp.load_module(temp.namebase, *module)