2019年11月28日木曜日

python3 Webサーバ実行時の文字化け

「実践力を身につける Pythonの教科書」というPythonプログラミングで学習中です。

この本のP.224 HTMLフォームをブラウザで表示したら文字化けしてしまった。
ソースはこれ↓
<meta charset="UTF-8">
<form>
  <input type="text" name="body" value="">
  <input type="hidden" name="mode" value="read">
  <input type="submit" value="発言">
</form>
このファイルはUTF-8で保存しているのだけど、Google Chromeではshift-jisで表示されたため
文字化けしていることがわかった。

※現在のchromeではエンコードを手動で変更できなくなってしまったので
下記の拡張機能を使うと変更できるようになる。
テキストエンコーディング - Chrome ウェブストア

これを使ってshift-jisに変更すると、たしかに表示されるようになった。
でも、元々UTF-8で保存したのがなぜshift-jisになったのかというと、
インストールしているPythonがshift-jisで出力する設定になっているらしい。

>>> import sys
>>> print(sys.stdout.encoding)
cp932
>>> 
***** ----- ***** ----- *****

この本はAmazonレビューの通り読みやすく理解しやすいのでおすすめだと思います。