Python - 日本語出力は大変

 
1. 概要
2. 日本語を出力する

1. 概要

 正に、「たったこれだけ」という
print('たったこれだけ')


 てなソースを書けば、もちろん

たったこれだけ
 と出力されるのであるが・・・。  これを、例えば、ウェブサーバ上に配置して、ブラウザ越しに実行しようとすると・・・。
/usr/local/bin/python: can't open file '/usr/home/hogehoge/lang/python/stdio/del01.py': [Errno 2] No such file or directory
 てなことになるのである。  これは、上で実行した環境は、標準出力を「UTF-8」に設定しているので、表示できるのですが。  ブラウザ越しだと、デフォルトで標準出力が「ascii」になっているためらしい。  で、対策を探すと、あちこちに用意されている・・・つまり、多くの人が苦労しているわけなのです。  ところが、その多くは、「Python2」系列のものだったりして、真似するとほぼ、エラーになるのです。  現在(2019年12月27日)のわたしの使用している環境は

Python 3.6.9
 で、ありまして、これが変わると以下の記事も変わるかもしれないのですが・・・。  多数ある中で、やっと解決できたのが「sys.stdout のエンコードを変更する in Python3.0 - @kei10in の日記」の記事のおかげです。

2. 日本語を出力する

 参考サイトに基づいて
import io
import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

print('たったこれだけ')


 と、1~5行を加えると
たったこれだけ
 正常に出力されます。  都度都度、エンコーディングを変えるやり方もあるようですが、わたしは、そうそう変えないので、トップに記述するだけでじゅうぶんです。  ちなみにこれは、出力先が、「UTF-8」の場合で書いていますが、文字コードが違う場合はコードの記述を変えれば、応用できるはずです。