我一直在閱讀左右和中心關於unicode和python。我想我明白編碼/解碼是什麼,但只要我嘗試使用標準庫的方法操作文件的名稱,我得到了臭名昭著:標準Python庫和Unicode
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 19:
ordinal not in range(128)
在這種情況下\ xe9代表「E」,如果我從os.path.join()或shutil.copy()調用它,則無關緊要,它會引發相同的錯誤。據我所知,它與python的默認編碼有關。我試着改變它:
# -*- coding: utf-8 -*-
沒有什麼變化。如果鍵入:
sys.setdefaultencoding('utf-8')
它告訴我:
ImportError: cannot import name setdefaultencoding
我真的不明白的是,爲什麼當我在終端上,「\ xe9」和所有鍵入它的工作原理。有人可以向我解釋爲什麼會發生這種情況/如何解決這個問題?
謝謝
我沒有意識到的是,os.path.walk傳遞給定函數編碼的字符串。在行走功能開始時,一個快速的.decode('latin1')解決了我的問題。謝謝! – chnaideur 2011-04-27 00:07:28