"git review --setup" failed in Chinese locale

If a subcommand's output includes a non-ASCII character, the following
occurs:

[nova]$ LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 git review --setup
Traceback (most recent call last):
  File "/usr/bin/git-review", line 1187, in <module>
    print(e)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 180-183: ordinal not in range(128)

Python3 works, because we force-encode everyting in run_command_status.

Change-Id: Ic4f4b0df57068c356a670901e02bf00c33985e2c
This commit is contained in:
Pete Zaitcev
2014-03-07 22:33:02 -07:00
parent a222b13617
commit b784b6965e

View File

@@ -1155,5 +1155,14 @@ if __name__ == "__main__":
try:
main()
except GitReviewException as e:
print(e)
# If one does unguarded print(e) here, in certain locales the implicit
# str(e) blows up with familiar "UnicodeEncodeError ... ordinal not in
# range(128)". See rhbz#1058167.
try:
u = unicode(e)
except NameError:
# Python 3, we're home free.
print(e)
else:
print(u.encode('utf-8'))
sys.exit(e.EXIT_CODE)