sys.getdefaultencoding() は、デフォルトの文字列エンコード形式を設定します。Python でエンコードおよびデコードするときにエンコード方法を指定しない場合、Python はdefaultencoding を使用します。
python2.x のデフォルトのエンコーディングは ascii です。これが、ほとんどの Python エンコーディング エラー「UnicodeDecodeError: 'ascii' codec can't decode byte...」の原因です。同様の機能を持つ
#coding:utf-8 は、ソース コードのエンコーディングを定義するために使用されます。これが定義されていない場合、ソース コードに中国語の文字列を含めることはできません。
注: setdefaultencoding は python2 以降は破棄されます。 .7 であるため、python3 では使用できません。ここでのインポート ステートメントは実際には sys の最初のインポート ステートメントではないため、最初に sys モジュールをリロードします。つまり、これは実際には sys モジュールの 2 番目または 3 番目のインポートである可能性があります。は sys への単なる参照であり、リロードすることしかできません。
では、なぜリロードする必要があるのに、関数を直接参照して呼び出すことができないのでしょうか? setdefaultencoding 関数はシステムによって呼び出された後に削除されるため、インポートを通じて参照されるときには存在しません。そのため、setdefaultencoding が使用可能になり、インタープリターの現在の文字エンコーディングが使用可能になるように、sys モジュールを一度再ロードする必要があります。コードで変更されました。
Python インストール ディレクトリの Lib フォルダーに、site.py というファイルがあります。その中に main() --> setencoding()-->sys.setdefaultencoding(encoding) があります。 site .pyはPythonインタプリタを起動するたびに自動的に読み込まれるので、main関数は毎回実行され、setdefaultencoding関数は出たらすぐに削除されます。