3

Python 2.7 の使用を知っている人がいるかどうかを尋ねます。どうすれば Unicode 文字列 (たとえば、日本語のファイル名) を Python スクリプトのコマンドライン引数として渡すことができますか。このファイル名が関数/メソッドに正しく渡されると、一部のファイル処理 (メタデータの抽出/取得など) が何らかのエンジン (Unicode をサポートすることが確認されている DLL) によって実行されます。次のことを試しましたが、残念ながら、python がクラッシュします。

ファイルを処理するメソッドにファイル名を渡す:

processingMethod(unicode(argv[1], "utf-8", errors="ignore").encode("utf-8"))

メソッドで、渡された文字列をデコードする方法は次のとおりです。

unicode(file_path).decode("utf-8")

フィードバックは非常に役立ちます。どうもありがとう!

4

1 に答える 1

0

unicode(argv[1], "utf-8"

残念ながら、Windows コマンド プロンプトで使用されるエンコーディングは決して (*) UTF-8 ではありません。これはロケール固有のエンコーディングであるため、日本語の Windows インストールでは引数に日本語の文字のみを渡すことができます。

Python 2 から引数の Unicode 文字を確実に読み取れるようにしたい場合は、Windows で実行していることを検出するためにスニッフィングし、Windows 固有の API を使用して、依存する標準 C ライブラリの代わりに引数を読み取る必要があります。ロケールエンコーディングについて。ctypes でそれを行う例については、この回答を参照してください。

(*: そうでない限りchcp 65001、しかし、それは他の多くのものを倒してしまう原因となるので、避けるのが最善です.)

于 2012-02-24T11:17:30.373 に答える