いつもお世話になります。
ひとつご教示ください。
やりたいこと
htmlのフォームからcgiでテキストファイルを読み込んで、内容を表示させたい。
https://www.gesource.jp/programming/python/cgi/0114.html
こちらのサイトの内容を参考に学習しています。
python2で書かれているため、ところどころ書き換えながら試しています。
環境は
python3.7
windows10
です。
わからないこと
内容の表示まではいくのですが、文字化けします。
自分ではこのあたりを試してみたのですが解消しません。
https://qiita.com/eleven-junichi2/items/f3fcb6abe7fe21a4d89a
http://wannaknowenglish.hatenablog.com/entry/2016/03/22/112223
他にも
https://teratail.com/questions/127384
等、teratail内の質問も見てみたのですが、同様のケースが見当たりませんでした。
あまりにも初心者すぎる質問かもしれませんが、もはや何を試せばよいのか分からなくなりました。
おそらくいろいろと見当違いなことをしてるのだと思いますが・・・
教えていただきたいと存じます。何卒よろしくお願いいたします。
追記
テキストファイルの文字コードはUTF-8として保存しています。
また投稿後にmetaタグを<meta charset="utf-8">に差し替えたところ、次はページ自体が文字化けしてしまいました。
python3
1#!/usr/bin/python3 2# -*- coding: utf-8 -*- 3 4html = """Content-Type: text/html 5 6<html> 7<head> 8<meta http-equiv="Content-Type" content="text/html" /> 9<title>選択されたファイルの内容を取得する</title> 10 <style type="text/css"> 11 <!-- 12 pre { 13 border-width: 1px; 14 border-style: dotted; 15 border-color: #009999; 16 margin: 1em; 17 padding: 1em; 18 } 19 --> 20 </style> 21</head> 22<body> 23<h1>選択されたファイルの内容を取得する</h1> 24<p>選択されたファイルの内容は 25<pre>%s</pre> 26です。</p> 27<form action="test14.py" method="post" enctype="multipart/form-data"> 28 <input type="file" name="filename" /> 29 <input type="submit" /> 30</form> 31</body> 32</html> 33""" 34 35import cgi 36import cgitb 37cgitb.enable() 38 39form = cgi.FieldStorage() 40data = "" 41if "filename" in form : 42 item = form["filename"] 43 if item.file: 44 data = item.file.read() 45print(html % data) 46 47# 出力するとこんな表示になってしまいます。 48# b'\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x95\xe3\x83\xab\xe3\x82\xa8\xe3\x83\xb3\xe3\x82\xb6\xe3\x81\xab\xe3\x81\x94\xe6\xb3\xa8\xe6\x84\x8f\xe3\x81\x8f\xe3\x81\xa0\xe3\x81\x95\xe3\x81\x84' 49
回答2件
あなたの回答
tips
プレビュー