[weboob] [PATCH 1/1] formatters: use weboob.tools.misc.guess_encoding instead of locale.getpreferredencoding()

Matthieu Weber mweber+weboob at free.fr
Wed May 20 21:21:23 CEST 2015


Signed-off-by: Matthieu Weber <mweber+weboob at free.fr>
---
 weboob/tools/application/formatters/iformatter.py |    7 +++----
 weboob/tools/application/formatters/table.py      |    5 ++---
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/weboob/tools/application/formatters/iformatter.py b/weboob/tools/application/formatters/iformatter.py
index 1e4f6dd..5bb865b 100644
--- a/weboob/tools/application/formatters/iformatter.py
+++ b/weboob/tools/application/formatters/iformatter.py
@@ -22,7 +22,6 @@ from __future__ import print_function
 
 import os
 import sys
-import locale
 import subprocess
 
 try:
@@ -62,7 +61,7 @@ else:
 from weboob.capabilities.base import BaseObject
 from weboob.tools.application.console import ConsoleApplication
 from weboob.tools.ordereddict import OrderedDict
-
+from weboob.tools.misc import guess_encoding
 
 __all__ = ['IFormatter', 'MandatoryFieldsNotFound']
 
@@ -122,7 +121,7 @@ class IFormatter(object):
     def output(self, formatted):
         if self.outfile != sys.stdout:
             with open(self.outfile, "a+") as outfile:
-                outfile.write(formatted.encode(locale.getpreferredencoding(), errors='replace') + os.linesep)
+                outfile.write(formatted.encode(guess_encoding(outfile), errors='replace') + os.linesep)
 
         else:
             for line in formatted.split('\n'):
@@ -134,7 +133,7 @@ class IFormatter(object):
                     self.print_lines = 0
 
                 if isinstance(line, unicode):
-                    line = line.encode(locale.getpreferredencoding(), errors='replace')
+                    line = line.encode(guess_encoding(self.outfile), errors='replace')
                 print(line)
                 self.print_lines += 1
 
diff --git a/weboob/tools/application/formatters/table.py b/weboob/tools/application/formatters/table.py
index 228d8ef..98687c7 100644
--- a/weboob/tools/application/formatters/table.py
+++ b/weboob/tools/application/formatters/table.py
@@ -17,11 +17,10 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with weboob. If not, see <http://www.gnu.org/licenses/>.
 
-import locale
-
 from prettytable import PrettyTable
 
 from weboob.capabilities.base import empty
+from weboob.tools.misc import guess_encoding
 
 from .iformatter import IFormatter
 
@@ -41,7 +40,7 @@ class TableFormatter(IFormatter):
     def flush(self):
         s = self.get_formatted_table()
         if s is not None:
-            self.output(s.encode(locale.getpreferredencoding(), errors='replace'))
+            self.output(s.encode(guess_encoding(self.outfile), errors='replace'))
 
     def get_formatted_table(self):
         if len(self.queue) == 0:
-- 
1.7.10.4




More information about the weboob mailing list