S3cmd signurl中文支持问题
s3cmd --version
s3cmd version 1.6.1
s3cmd signurl s3://s3demo/ceph知识树.png +200
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please try reproducing the error using
the latest s3cmd code from the git master
branch found at:
https://github.com/s3tools/s3cmd
and have a look at the known issues list:
https://github.com/s3tools/s3cmd/wiki/Common-known-issues-and-their-solutions
If the error persists, please report the
following lines (removing any private
info as necessary) to:
s3tools-bugs@lists.sourceforge.net
You have encountered a UnicodeEncodeError. Your environment
variable LANG=zh_CN.UTF-8 may not specify a Unicode encoding (e.g. UTF-8).
Please set LANG=en_US.UTF-8 or similar in your environment before
invoking s3cmd.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Invoked as: /usr/local/bin/s3cmd signurl s3://hxs1-s3soft/ceph知识树.png +200
Problem: UnicodeEncodeError: 'ascii' codec can't encode characters in position 31-33: ordinal not in range(128)
S3cmd: 1.6.1
python: 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)]
environment LANG=zh_CN.UTF-8
Traceback (most recent call last):
File "/usr/local/bin/s3cmd", line 2923, in <module>
rc = main()
File "/usr/local/bin/s3cmd", line 2843, in main
rc = cmd_func(args)
File "/usr/local/bin/s3cmd", line 2017, in cmd_signurl
debug("url to sign: %r" % url_to_sign)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 31-33: ordinal not in range(128)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
An unexpected error has occurred.
Please try reproducing the error using
the latest s3cmd code from the git master
branch found at:
https://github.com/s3tools/s3cmd
and have a look at the known issues list:
https://github.com/s3tools/s3cmd/wiki/Common-known-issues-and-their-solutions
If the error persists, please report the
above lines (removing any private
info as necessary) to:
s3tools-bugs@lists.sourceforge.net
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
在s3cmd源码文件中添加下面两行解决
reload(sys)
sys.setdefaultencoding('utf-8')
patch最终效果
2894 if __name__ == '__main__':
2895 try:
2896 ## Our modules
2897 ## Keep them in try/except block to
2898 ## detect any syntax errors in there
2899 reload(sys) #新加
2900 sys.setdefaultencoding('utf-8') #新加
2901 from S3.ExitCodes import *
2902 from S3.Exceptions import *