- 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」の場合で書いていますが、文字コードが違う場合はコードの記述を変えれば、応用できるはずです。
|
  |