我有一个从终端运行的脚本,在Centos 7中使用gsutil上传文件,我收到有关我的文件名之一的错误。
Caught non-retryable exception while listing file:///home//:
CommandException: Invalid Unicode path encountered
('/home/mysite/public_html/images/office-100-m\xe2\xb2.jpg').
我像这样检查python(注意超字符串):
>>> "office-100-m²-2.jpg".decode("utf-8")
u'office-100-m\xb2-2.jpg'
它解码吗?我期待看到一个错误。当我检查语言环境
python -c "import locale; print locale.getdefaultlocale()"
('en_US', 'UTF-8')
那有什么问题呢?
答案 0 :(得分:0)
该字符串不是有效的unicode序列。如果您使用字节并尝试解码,则会看到错误:
>>> s = '/home/mysite/public_html/images/office-100-m\xe2\xb2.jpg'
>>> s.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 44-45: invalid continuation byte
类似地,如果您对问题中的Unicode字符串进行编码,则编码后的字节与错误中显示的字节不同。这是该字符串的正确utf-8编码版本:
>>> u"office-100-m²-2.jpg".encode('utf-8')
'office-100-m\xc2\xb2-2.jpg'
通知\xc2\xb2
与\xe2\xb2
。我不确定文件系统文件名的编码方式是什么,但它似乎不是UTF-8。