2

私はPythonエンコーディングに問題があります。Pythonサブプロセスcheck_outputデコードスペシャル文字

subprocess.check_output("ipconfig", shell=True) 

それはのように、それに私に特殊文字を含む出力を与える:私はこれを実行しようとすると

"Statut du m\x82dia" 
"M\x82dia d\x82connect\x82" 

(私はフランス語です)

私はそれをデコードしてみてください最後に.decode()、それは私に、このエラーを与える:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 78: invalid start byte 

私はを使用してみました3210、私は何時間もエンコーディングとデコードで遊んだので、答えが見つかりません。私がインターネットで見たすべてがうまくいかなかった。たぶん私はちょっとばかだけど、ちょっとね。 これらのデコードエラーを取り除き、特殊文字を印刷するにはどうすればよいですか?

ありがとうございました。

+0

https://stackoverflow.com/questions/9941064/subprocess-popen-with-a-unicode-path https://bugs.python.org/issue27179 –

+2

「encoding = "437" 'または' encoding = "850" 'を引数に渡していますが、なぜコードページがそれなのか説明していないので、私はその答えに満足できません。 –

+0

@JoshLeeああ、 '.decode(sys.stdout.encoding)'と同じように動作します。ありがとう!あなたはあなたの答えを「公式」な答えにすることができますか?私はそれを検証できますか?あなたも私の一日を過ごしたことがあります^^これで長時間執着しました^^ " – Alpha

答えて

2

あなたは、UnicodeモードとANSIモードを持っているCMD、を介してコマンドを起動しています。 "正しい"方法は、Unicodeモードを呼び出すことですが、encoding="437"またはencoding="850"をサブプロセス呼び出しに追加して機能させることができます。これはあなたが現在のコードページが何であるかを知ることによって決まります。

関連する問題