From b441bcb678ca86c71b1f54f784df0db76453181c Mon Sep 17 00:00:00 2001
From: Toshio Kuratomi <toshio@fedoraproject.org>
Date: Mon, 12 Oct 2015 10:05:19 -0700
Subject: [PATCH] Fix display when run through a testing framework that
 overrides stderr/stdout

---
 lib/ansible/utils/display.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/ansible/utils/display.py b/lib/ansible/utils/display.py
index 5c392af8da3..88e1a568047 100644
--- a/lib/ansible/utils/display.py
+++ b/lib/ansible/utils/display.py
@@ -26,6 +26,7 @@ import random
 import subprocess
 import sys
 import time
+import locale
 import logging
 import getpass
 from struct import unpack, pack
@@ -267,9 +268,13 @@ class Display:
 
     @staticmethod
     def _output_encoding(stderr=False):
-        if stderr:
-            return sys.stderr.encoding or 'utf-8'
-        return sys.stdout.encoding or 'utf-8'
+        encoding = locale.getpreferredencoding()
+        # https://bugs.python.org/issue6202
+        # Python2 hardcodes an obsolete value on Mac.  Use MacOSX defaults
+        # instead.
+        if encoding in ('mac-roman',):
+            encoding = 'utf-8'
+        return encoding
 
     def _set_column_width(self):
         if os.isatty(0):