0

ユーザーのユーザー名にユニコード文字が含まれているポルトガルのユーザーのコンピューターで python プログラムを実行しています。一部のファイル操作に結果のパスを使用するため、機能的なものを返したいと思いos.path.expanduser('~')ますが、現在はstrUnicode 文字列の Python 表現を返します。

>>> import os
>>> os.path.expanduser('~')
'C:\\Users\\V\xe2nia'

しかし、これはpython文字列です...これをWindowsが有効なファイルパスとして認識する実際のUnicode文字列に変換するにはどうすればよいですか?

4

2 に答える 2

7

関数は、Unicode 文字列ではなく、バイト文字列を返しました。文字列に使用されるエンコーディングを考えると、それをデコードする必要があります。

os.path.expanduser('~').decode(sys.getfilesystemencoding())

ここでは、使用されたエンコーディングはファイルシステムのエンコーディングであり、sys.getfilesystemencoding(). ここからラテン 1 のように見えますが、確かではありません。

また、 Unicodeパスを渡して、os.path.expanduser()Python にデコードを行わせることもできます。

os.path.expanduser(u'~')

Python Unicode HOWTOで、これおよびその他の Unicode の問題について読んでください。エンコードされたバイト文字列と Unicode 文字列の違いがわからない場合は、こちらの優れた記事もお読みください。

于 2012-11-07T17:52:51.453 に答える