2013-11-24 15 views

答えて

3

ファイルシステムのエンコーディングは、多くの場合、オペレーティングシステムの固有のプロパティです。変更することはできません。何らかの理由で、ファイルシステムのエンコーディングとは異なる名前でエンコードされたファイルを作成する必要がある場合は、ファイル名にUnicode文字列を使用しないでください。 (または、あなたは、Python 3を使用している場合、文字列の代わりにバイトのオブジェクトを使用しています。)特に

See the documentation for details.は、Windowsシステムで、ファイルシステムがネイティブユニコードなので、何の変換は、実際にされていない、ということに注意してくださいその結果、代替のファイルシステムエンコーディングを使用することは不可能です。

4

それを変更するには、2つの方法があります。

1)(のlinux-のみ)export LC_CTYPE=en_US.UTF8 のpythonを起動する前に:それがない場合にはLANGはLC_CTYPEのデフォルト値として機能します

$ 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_ALLはLC_CTYPEとLANGの両方を上書きしながら)

2)monkeypatching:

import sys 
sys.getfilesystemencoding = lambda: 'UTF-8' 

どちらのメソッドも、os.statのような関数にunicode(python2.x)文字列を受け入れるようにしました。 それ以外の場合、これらの関数は、ファイル名にASCII以外のシンボルがあると例外を送出します。

+0

方法1が動作しないまたは私 – sureshvv

+0

@ sureshvvお使いのOSは? –

+0

Ubuntu 16.04。 LANG = en_US.UTF8を/ etc/environmentに追加して再起動してください。 – sureshvv

関連する問題