From e378c1bba8d1db2689fe815c449ace57e234ab17 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Thu, 17 Mar 2011 21:44:05 +0100
Subject: [PATCH] lilylib: handle encodings. Fixes #1073 and u#714213.

---
 python/lilylib.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/python/lilylib.py b/python/lilylib.py
index 3bf77f6f44..6fb96bbbf5 100644
--- a/python/lilylib.py
+++ b/python/lilylib.py
@@ -47,13 +47,19 @@ underscore = _
 # Urg, Python 2.4 does not define stderr/stdout encoding
 # Maybe guess encoding from LANG/LC_ALL/LC_CTYPE?
 
+reload (sys)
+sys.setdefaultencoding ('utf-8')
+import codecs
+sys.stdout = codecs.getwriter ('utf8') (sys.stdout)
+sys.stderr = codecs.getwriter ('utf8') (sys.stderr)
+
 def encoded_write(f, s):
-    f.write (s.encode (f.encoding or 'utf_8'))
+    f.write (s.encode (f.encoding or 'utf-8', 'replace'))
 
 # ugh, Python 2.5 optparse requires Unicode strings in some argument
 # functions, and refuse them in some other places
 def display_encode (s):
-    return s.encode (sys.stderr.encoding or 'utf_8')
+    return s.encode (sys.stderr.encoding or 'utf-8', 'replace')
 
 # Lilylib globals.
 program_version = '@TOPLEVEL_VERSION@'
-- 
2.39.5