2024-05-18 23:33:26 发布
网友
>>> import sys >>> sys.getfilesystemencoding() 'UTF-8'
我该怎么改变?我知道如何更改默认的系统编码。
>>> reload(sys) <module 'sys' (built-in)> >>> sys.setdefaultencoding('ascii')
但是没有sys.setfilesystemcoding。
在许多情况下,文件系统编码是操作系统的固有属性。它不能更改-如果出于某种原因,您需要创建名称编码不同于文件系统编码的文件,请不要对文件名使用Unicode字符串。(或者,如果您使用的是Python3,请使用bytes对象而不是字符串。)
See the documentation for details.特别要注意的是,在Windows系统上,文件系统是本机Unicode的,因此实际上没有进行转换,因此,不可能使用替代的文件系统编码。
有两种方法可以改变它:
1)(仅限linux)export LC_CTYPE=en_US.UTF8 在启动python之前:
export LC_CTYPE=en_US.UTF8
$ 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
请注意,如果未设置LC_CTYPE,LANG将作为其默认值,而LC_ALL将同时覆盖LC_CTYPE和LANG)
2)monkeypatching:
import sys sys.getfilesystemencoding = lambda: 'UTF-8'
这两种方法都允许像os.stat这样的函数接受unicode(python2.x)字符串。 否则,当这些函数在文件名中看到非ascii符号时会引发异常。
os.stat
在许多情况下,文件系统编码是操作系统的固有属性。它不能更改-如果出于某种原因,您需要创建名称编码不同于文件系统编码的文件,请不要对文件名使用Unicode字符串。(或者,如果您使用的是Python3,请使用bytes对象而不是字符串。)
See the documentation for details.特别要注意的是,在Windows系统上,文件系统是本机Unicode的,因此实际上没有进行转换,因此,不可能使用替代的文件系统编码。
有两种方法可以改变它:
1)(仅限linux)
export LC_CTYPE=en_US.UTF8
在启动python之前:请注意,如果未设置LC_CTYPE,LANG将作为其默认值,而LC_ALL将同时覆盖LC_CTYPE和LANG)
2)monkeypatching:
这两种方法都允许像
os.stat
这样的函数接受unicode(python2.x)字符串。 否则,当这些函数在文件名中看到非ascii符号时会引发异常。相关问题 更多 >
编程相关推荐