Có hai cách để thay đổi nó:
1) (linux-only) export LC_CTYPE=en_US.UTF8
trước khi tung ra python:
$ LC_CTYPE=C python -c 'import sys; print(sys.getfilesystemencoding())'
ANSI_X3.4-1968
$ LC_CTYPE=C.UTF-8 python -c 'import sys; print(sys.getfilesystemencoding())'
UTF-8
Lưu ý rằng LANG phục vụ như là giá trị mặc định cho LC_CTYPE nếu nó không phải là thiết lập, trong khi LC_ALL ghi đè cả LC_CTYPE và LANG)
2) monkeypatching:
import sys
sys.getfilesystemencoding = lambda: 'UTF-8'
Cả hai phương thức đều cho phép các chức năng như os.stat
chấp nhận các chuỗi unicode (python2.x). Nếu không, các hàm đó sẽ tăng ngoại lệ khi chúng nhìn thấy các ký hiệu không phải ascii trong tên tệp.
Nguồn
2015-07-31 20:13:47
phương pháp 1 không hoạt động hoặc tôi – sureshvv
@sureshvv Hệ điều hành của bạn là gì? –
Ubuntu 16.04. Đã phải thêm LANG = en_US.UTF8 vào/etc/environment và khởi động lại. – sureshvv