元のリンク:https://blog.csdn.net/th_num/article/details/80685389
Python3中態到UnicodeEncodeError: 'ascii'コーデックは範囲内にない序数の文字をエンコードできません(128)
ただし、Windowsでコードを実行するのは正常です。その理由は、Linuxシステム言語によるものです。
システム環境コードを確認しました
>>> import sys
>>> sys.stdout.encoding
'US-ASCII'
- 1
- 2
- 3
そして、正常に印刷できる別のマシンはen_US.UTF-8です。
解決
(1)環境変数LANGを設定します
LinuxまたはMacで環境変数を設定する方法は同じです。〜 / .bash_profileファイルを編集し(「〜」はユーザーがログインした後のデフォルトディレクトリを指します)、次の行を追加します。
export LANG="en_US.UTF-8"
- 1
保存して終了した後、コマンドラインコンソールを再度開きます
(2)PYTHONIOENCODINGを使用する
pythonコマンドを実行する前に、パラメーターPYTHONIOENCODING = utf-8 pythontest.pyを追加します。
このパラメーターの説明は、公式ドキュメントにあります:https:
//docs.python.org/3.6/using/cmdline.html#envvar-PYTHONIOENCODING
(3)標準出力を再定義する
sys.stdout = codecs.getwriter( "utf-8")(sys.stdout.detach())をコードに追加して、コードが次のようになるようにします。
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
print('中文')
- 1
- 2
- 3
- 4