[解決済み] なぜ 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" に固定されており、変更するとエラーが発生します。
読むためのポインタを提案します。
- http://blog.ianbicking.org/illusive-setdefaultencoding.html
- http://nedbatchelder.com/blog/200401/printing_unicode_from_python.html
- http://www.diveintopython3.net/strings.html#one-ring-to-rule-them-all
- http://boodebr.org/main/python/all-about-python-and-unicode
- http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python
関連
-
Pythonショートビデオクローラーチュートリアル
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] を付けるべきでしょうか?(shebang)を付けるべきか、またどのような形で付けるべきか?
-
[解決済み] Pythonの__future__は何に使うのか、いつ、どのように使うのか、その仕組みについて
-
[解決済み] 最近のPerlはなぜデフォルトでUTF-8を避けるのですか?
-
[解決済み] UTF-8のCSVファイルをExcelに強制的に自動認識させることは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Pythonによるjieba分割ライブラリ
-
Python 入出力と高次代入の基礎知識
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
-
[解決済み] UnicodeDecodeError: 'utf8' コーデックは位置3131のバイト0x80をデコードできません: 不正なスタートバイトです
-
[解決済み] Pythonのデフォルトエンコーディングを変更する?