2
>>> a = os.popen('chcp 65001')
>>> a.read()
'Active code page: 65001\n'
>>> a.close()
>>> a = os.popen('chcp')
>>> a.read()
'Active code page: 437\n'
>>> a.close()

コードページを 65001 に設定した後、次に chcp を呼び出すと、アクティブなコードページは 437 ではなく 65001 であると表示されます。これを Windows コマンド プロンプトで試してみたところ、うまくいきました。Pythonコードで機能しないのはなぜですか?

4

1 に答える 1

3

その理由は、呼び出すたびos.popenに新しいプロセスが生成されるためです。2 つのcmd.exeセッションを開いてchcp 65001、一方とchcp他方で実行してみてください。これが、ここで Python コードで行っていることです。

1 つの注意点: [popen*()][1]Python 2.6 以降、すべての呼び出しが減価償却されています。使用する新しいモジュールはsubprocessmodule です。

于 2010-08-26T16:38:11.353 に答える