There are two ways to change it:
1) (Linux only) export LC_CTYPE=en_US.UTF8 before running 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
Note that LANG is used as the default value for LC_CTYPE if it is not set, while LC_ALL overrides both LC_CTYPE and LANG)
2) monkeypatching:
import sys sys.getfilesystemencoding = lambda: 'UTF-8'
Both methods allow functions like os.stat to accept unicode strings (python2.x). Otherwise, these functions throw an exception if characters other than ascii appear in the file name.
Antony hatchkins
source share