1. ホーム
  2. python

[解決済み] Pythonのデフォルトエンコーディングを変更する?

2022-04-25 12:56:08

質問

でエンコードできない、デコードできない、といった問題が多発しています。 Python コンソールからアプリケーションを実行したとき。しかし エクリプス PyDev IDE の場合、デフォルトの文字エンコーディングは UTF-8 で、問題ないです。

デフォルトエンコーディングを設定するためにいろいろ検索してみたところ、Pythonは sys.setdefaultencoding 関数を使用することができません。

では、どのような解決策があるのでしょうか?

どのように解決するのか?

ここでは、よりシンプルな方法(ハック)を紹介します。 setdefaultencoding() 関数から削除された sys :

import sys
# sys.setdefaultencoding() does not exist, here!
reload(sys)  # Reload does the trick!
sys.setdefaultencoding('UTF8')

(Python3.4+の場合の注意点。 reload()importlib というライブラリがあります)。

これは、安全なものではありません しかし、これは明らかにハックです。 sys.setdefaultencoding() を意図的に削除しています。 sys は、Pythonの起動時に これを再び有効にして、デフォルトのエンコーディングを変更します。 は、ASCII がデフォルトであることに依存しているコードを壊す可能性があります。 (このコードはサードパーティ製である可能性があり、一般にその修正は不可能か危険です)。