From 10f5af82f96e1482d800d8db7416cf35d46b863b Mon Sep 17 00:00:00 2001 From: cavassin Date: Thu, 5 Dec 2013 13:17:57 -0200 Subject: [PATCH 1/2] Prevent UnicodeEncodeError Prevents UnicodeEncodeError: 'ascii' codec can't encode character, while printing shell commands output --- lib/ansible/callbacks.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ansible/callbacks.py b/lib/ansible/callbacks.py index 08da6630fb..5274a6f8a5 100644 --- a/lib/ansible/callbacks.py +++ b/lib/ansible/callbacks.py @@ -128,9 +128,15 @@ def display(msg, color=None, stderr=False, screen_only=False, log_only=False, ru msg2 = stringc(msg, color) if not log_only: if not stderr: - print msg2 + try: + print msg2 + except UnicodeEncodeError: + print msg2.encode('utf-8') else: - print >>sys.stderr, msg2 + try: + print >>sys.stderr, msg2 + except UnicodeEncodeError: + print >>sys.stderr, msg2.encode('utf-8') if constants.DEFAULT_LOG_PATH != '': while msg.startswith("\n"): msg = msg.replace("\n","") From 6ba93817a947fe344881bbd86cb22bb3e6542700 Mon Sep 17 00:00:00 2001 From: Wanderlei Antonio Cavassin Date: Fri, 6 Dec 2013 12:59:43 -0200 Subject: [PATCH 2/2] Avoid UnicodeDecodeError exception when passing module args --- lib/ansible/module_common.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ansible/module_common.py b/lib/ansible/module_common.py index 3133ab26ba..7beac36bee 100644 --- a/lib/ansible/module_common.py +++ b/lib/ansible/module_common.py @@ -136,7 +136,10 @@ class ModuleReplacer(object): complex_args_json = utils.jsonify(complex_args) # We force conversion of module_args to str because module_common calls shlex.split, # a standard library function that incorrectly handles Unicode input before Python 2.7.3. - encoded_args = repr(module_args.encode('utf-8')) + try: + encoded_args = repr(module_args.encode('utf-8')) + except UnicodeDecodeError: + encoded_args = repr(module_args) encoded_lang = repr(C.DEFAULT_MODULE_LANG) encoded_complex = repr(complex_args_json)