diff --git a/imgcreate/errors.py b/imgcreate/errors.py
index ba08563..071d4b8 100644
--- a/imgcreate/errors.py
+++ b/imgcreate/errors.py
@@ -20,6 +20,29 @@ class CreatorError(Exception):
     """An exception base class for all imgcreate errors."""
     def __init__(self, msg):
         Exception.__init__(self, msg)
+    
+    # Some error messages may contain unicode strings (especially if your system
+    # locale is different from 'C', e.g. 'de_DE'). Python's exception class does
+    # not handle this appropriately (at least until 2.5) because str(Exception)
+    # returns just self.message without ensuring that all characters can be
+    # represented using ASCII. So we try to return a str and fall back to repr
+    # if this does not work.
+    # 
+    # Please use unicode for your error logging strings so that we can really
+    # print nice error messages, e.g.:
+    #     log.error(u"Internal error: " % e)
+    # instead of
+    #     log.error("Internal error: " % e)
+    # With our custom __str__ and __unicode__ methods both will work but the 
+    # first log call print a more readable error message.
+    def __str__(self):
+        try:
+            return str(self.message)
+        except UnicodeEncodeError:
+            return repr(self.message)
+    
+    def __unicode__(self):
+        return unicode(self.message)
 
 class KickstartError(CreatorError):
     pass
diff --git a/tools/livecd-creator b/tools/livecd-creator
index 1aab882..39f7478 100755
--- a/tools/livecd-creator
+++ b/tools/livecd-creator
@@ -129,7 +129,7 @@ def main():
         creator.unmount()
         creator.package()
     except imgcreate.CreatorError, e:
-        logging.error("Error creating Live CD : %s" % e)
+        logging.error(u"Error creating Live CD : %s" % e)
         return 1
     finally:
         creator.cleanup()
