Sys.setdefaultencoding("utf-8") の再考: Python スクリプトで使用すべきではない理由
Python スクリプトでは、 sys.setdefaultencoding("utf-8") が最初に使用されているのがよく見られます。デフォルトの ASCII エンコーディングを UTF-8 に切り替えます。ただし、この方法は強く推奨されず、Python 3 では廃止されました。
sys.setdefaultencoding("utf-8") の使用を避ける理由
によると公式 Python ドキュメント:
- これは Python の起動中にのみ使用可能であり、呼び出す必要があります。 Python ランタイム前にアクセスされるシステム全体のモジュール (sitecustomize.py など) から。
- sitecustomize.py が評価されると、sys.setdefaultencoding() 関数が sys モジュールから削除され、
- 起動後にアクセスするには、リロード ハックが必要ですが、これは必要ありません。
sys.setdefaultencoding("utf-8") を使用した結果
-
潜在的に矛盾する動作:後で設定される他のエンコード設定と競合する可能性があるため、予期しない動作が発生する可能性があります。 script.
-
パフォーマンスの低下: システム全体のモジュールを再ロードすると、パフォーマンスに大きな影響を与える可能性があります。
-
Python 3 での非推奨: この関数はマークされていますPython 3 では廃止されており、呼び出すとエラーが発生し、実行すべきでないことを示します。
推奨解決策
Python 3 では、デフォルトのエンコーディングが UTF-8 に固定されているため、sys.setdefaultencoding() が冗長になります。代わりに、Unicode と str.encode("utf-8") などのエンコード関数を使用して、文字列と特定のエンコード間の変換を明示的に行うことをお勧めします。
参考資料
- [幻想sys.setdefaultencoding](http://blog.ianbicking.org/illusive-setdefaultencoding.html)
- [Python からの Unicode の印刷](http://nedbatchelder.com/blog/200401/printing_unicode_from_python.html)
- [すべてを支配する 1 つのリング: Unicode](http://www.diveintopython3.net/strings.html#one-ring-to-rule-them-all)
- [Python と Unicode のすべて](http://boodebr.org /main/python/all-about-python-and-unicode)
- [Unicode を正しく取得するPython](http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python)
以上がPython 3 で「sys.setdefaultencoding(\'utf-8\')」を使用すべきではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。