From 3221d3dc855eaa6827fcd1827279a1045f1d5e3f Mon Sep 17 00:00:00 2001 From: Paul Varner Date: Fri, 19 Jul 2013 12:09:27 -0500 Subject: [PATCH] Fix LookupError for unknown encodings. Sets the preferred encoding to UTF-8 if python is unable to find a codec for the value returned by locale.getpreferedencodings() function. --- overviewer_core/assetmanager.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/overviewer_core/assetmanager.py b/overviewer_core/assetmanager.py index be3b083..a1aec75 100644 --- a/overviewer_core/assetmanager.py +++ b/overviewer_core/assetmanager.py @@ -55,6 +55,16 @@ directory. logging.debug(traceback.format_exc()) self.overviewerConfig = dict(tilesets=dict()) + # Make sure python knows the preferred encoding. If it does not, set it + # to utf-8" + self.preferredencoding = locale.getpreferredencoding() + try: + # We don't care what is returned, just that we can get a codec. + codecs.lookup(self.preferredencoding) + except LookupError: + self.preferredencoding = "utf_8" + logging.debug("Preferred enoding set to: %s", self.preferredencoding) + def get_tileset_config(self, name): "Return the correct dictionary from the parsed overviewerConfig.js" for conf in self.overviewerConfig['tilesets']: @@ -185,7 +195,7 @@ directory. index = codecs.open(indexpath, 'r', encoding='UTF-8').read() index = index.replace("{title}", "Minecraft Overviewer") - index = index.replace("{time}", time.strftime("%a, %d %b %Y %H:%M:%S %Z", time.localtime()).decode(locale.getpreferredencoding())) + index = index.replace("{time}", time.strftime("%a, %d %b %Y %H:%M:%S %Z", time.localtime()).decode(self.preferredencoding)) versionstr = "%s (%s)" % (util.findGitVersion(), util.findGitHash()[:7]) index = index.replace("{version}", versionstr)