プログラミング初心者なので伝わりにくいかもしれませんがよろしくお願いします。
前提・実現したいこと
pythonスタートブックにて学習をしています。
書籍を参考にwebアプリを作成し、webブラウザで表示をすると文字化けをしてしまいます。
解決策をご教授ください。
ソースコードはUTF8を使用しています。
該当のソースコード
以下のソースコードはfortuneという名前でcgi-binフォルダに保存しています。
cgi-binフォルダはpyworksというフォルダの中にあります。
python
1#!/usr/bin/env python 2 3import sys 4import io 5 6sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8') 7sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 8sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8') 9 10 11 12import random 13import cgitb 14cgitb.enable() 15 16html_body = '''<html> 17<head> 18<meta charset = ''UTF-8''> 19<title>今日の運勢</title> 20</head> 21<body> 22今日のあなたの運勢は{}です。 23</body> 24</html>''' 25 26todays_fortune = random.choice(['大吉','中吉','吉','末吉','凶','大凶',]) 27 28 29print("Content-type:text/html") 30print("") 31print(html_body.format(todays_fortune)) 32
発生している問題・エラーメッセージ
エラーコードは出ていません。
本来出力されるはずの文字
今日のあなたの運勢は〇〇です。
実際に出力される文字
莉頑律縺ョ縺ゅ↑縺溘�驕句兇縺ッ螟ァ蜷峨〒縺吶
試したこと
・ソースコードがUTF8になっているか確認をしました。
・safariとgooglechrome両方で試しましたが両方で文字化けが確認されました。
・以下の対策コード書きました。
python
1import sys 2import io 3 4sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8') 5sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 6sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8') 7
サーバー起動コマンドです。
pyworksフォルダから起動しました。
※pyworksフォルダの中にcgi-binフォルダがあります。
python -m http.server --cgi
補足情報(FW/ツールのバージョンなど)
使用機器:mac
pythonバージョン:3.8.5
ブラウザ:safari, googlechrome
エディタ:Spyder(python3,8),VSCode
回答1件
あなたの回答
tips
プレビュー