From 21f5bc4242b2244c0d7911b8a72ab828b4cb162f Mon Sep 17 00:00:00 2001 From: Andrey Shorin Date: Tue, 24 Sep 2013 16:14:20 +0400 Subject: [PATCH 1/2] Prevent UnicodeEncodeError: 'ascii' codec can't encode characters in position ...: ordinal not in range(128) --- lib/ansible/utils/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ansible/utils/__init__.py b/lib/ansible/utils/__init__.py index 2ba2d2d8fe..6af22d07c0 100644 --- a/lib/ansible/utils/__init__.py +++ b/lib/ansible/utils/__init__.py @@ -410,7 +410,7 @@ def md5s(data): buf = StringIO.StringIO(data) digest = _md5() - digest.update(buf.read()) + digest.update(buf.read().encode('utf-8')) return digest.hexdigest() def md5(filename): From fd101dd2d605bfecd9c6a5bfb3982c49a08e9e11 Mon Sep 17 00:00:00 2001 From: Andrey Shorin Date: Wed, 25 Sep 2013 09:15:08 +0400 Subject: [PATCH 2/2] Encode to utf-8 only when needed --- lib/ansible/utils/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/ansible/utils/__init__.py b/lib/ansible/utils/__init__.py index 6af22d07c0..a8b05679b5 100644 --- a/lib/ansible/utils/__init__.py +++ b/lib/ansible/utils/__init__.py @@ -408,9 +408,11 @@ def merge_hash(a, b): def md5s(data): ''' Return MD5 hex digest of data. ''' - buf = StringIO.StringIO(data) digest = _md5() - digest.update(buf.read().encode('utf-8')) + try: + digest.update(data) + except UnicodeEncodeError: + digest.update(data.encode('utf-8')) return digest.hexdigest() def md5(filename):