Description: fix for _format arg function raising UnicodeDecodeError if DEFAULT_ENCODING cannot encode unicode characters Author: Ben Carrillo Bug: XXX Forwarded: yes --- a/sh.py +++ b/sh.py @@ -561,7 +561,11 @@ # if the argument is already unicode, or a number or whatever, # this first call will fail. try: arg = unicode(arg, DEFAULT_ENCODING).encode(DEFAULT_ENCODING) - except TypeError: arg = unicode(arg).encode(DEFAULT_ENCODING) + except TypeError: + try: + arg = unicode(arg).encode(DEFAULT_ENCODING) + except UnicodeEncodeError: + arg = unicode(arg).encode('utf-8') return arg