1. ホーム
  2. python

[解決済み] なぜ py スクリプトで sys.setdefaultencoding("utf-8") を使ってはいけないのでしょうか?

2022-04-15 08:29:44

質問

Pyスクリプトで、これをスクリプトの先頭で使っているものをいくつか見かけました。どのような場合にこれを使うべきでしょうか?

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

解決方法は?

ドキュメントの通りです。これは、デフォルトのASCIIからUTF-8のような他のエンコーディングに切り替えることができるもので、Pythonランタイムは文字列バッファをunicodeにデコードする必要があるときはいつでもこれを使用することになります。

この関数はPythonの起動時、Pythonが環境をスキャンするときにのみ利用可能です。システムワイドモジュールで呼び出す必要があります。 sitecustomize.py このモジュールが評価された後 setdefaultencoding() 関数から削除されます。 sys モジュールで使用されます。

実際に使うには、属性を復活させるリロードハックしかありません。

また の使用は sys.setdefaultencoding() は、常に推奨されています。 そして、py3kでは禁止されています。py3k のエンコーディングは "utf-8" に固定されており、変更するとエラーが発生します。

読むためのポインタを提案します。