🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1641閲覧

webブラウザで文字化けが起こりwebアプリが表示されません。

yo-Beginner03

総合スコア0

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/01/04 05:38

実現したいこと

格言を表示するWebアプリをwebブラウザ上に表示させたいです。
ご教授お願いします。

試したことの手順

  1. 「Web」フォルダ直下に「cgi-bin」というフォルダをつくり、

この「cgi-bin」フォルダに、「kakugen.py」(上記コード)を作成
0. ターミナルで以下を実行。Webサーバを起動
$ python3 -m http.server --cgi 8080
0. プログラムの実行権限を与えるため、新規のターミナルウインドウを表示させ、
chmod +x Web/cgi-bin/kakugen.py
と入力して[enter]キーをおします
0. Google Chromeのアドレス欄に「http://localhost:8080/Web/cgi-bin/kakugen.py」と入力して[enter]キーを押下
0. 下記エラーの発生

python

1コード  2#!/usr/bin/env python3 3 4# ヘッダ情報を出力   5print(#"Content-Type: text/html; charset=utf-8") 6 7# ヘッダと本体データを区切る空行 8print("") 9 10# 本体のデータを出力 11print("<html><head><meta charset='utf-8></head><body>") 12print("聞くことに速く語ることに遅くあるべき") 13print("</body></html>")

発生したエラー:webブラウザ上に表示されたコードが文字化け

**#!/usr/bin/env python3

繝倥ャ繝€諠��ア繧貞�蜉�

print("Content-Type: text/html; charset=utf-8")

繝倥ャ繝€縺ィ譛ャ菴薙ョ繝シ繧ソ繧貞玄蛻�k遨コ陦�

print("")

譛ャ菴薙�繝��繧ソ繧貞�蜉�

print("<html><head><meta charset='utf-8'></head><body>")
print("閨槭¥縺薙→縺ォ騾溘¥隱槭k縺薙→縺ォ驕�¥縺ゅk縺ケ縺�")
print("</body></html>")

上記以外で試したこと・確認したこと=結果:変化なし

・文字コードはUTF-8になっているかの確認
→環境変数はターミナルで「nano ~/.bashrc」を実行して以下の1行をつけ加えた
export PYTHONIOENCODING='utf-8'
・実行権限については「$ chmod +x〜」の他に「$ chmod a+x〜」を試した。
・ポート番号は8080以外にも8081、8082、8083を試した

同サイトの同時例の解決方法で試した結果:コード内容とwebブラウザ上の表示 参考サイト

python

1コード  2#!/usr/bin/env python3 3 4# ヘッダ情報を出力   5print("Content-Type: text/html\n") 6 7# ヘッダと本体データを区切る空行 8print("") 9 10# 本体のデータを出力 11print('<!DOCTYPE html><html lang="ja"><head><title></title></head><body>') 12print("聞くことに速く語ることに遅くあるべき") 13print("</body></html>")

webブラウザ上の表示

Error response
Error code: 404

Message: File not found.

Error code explanation: HTTPStatus.NOT_FOUND - Nothing matches the given URI.

補足情報

pythonバージョン:python3.9.1
PC:Mac(macOS Big sur 11.1)
参考書籍:「実践力を身につけるPythonの教科書p216、217
使用してるコードエディタ:vsコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/01/04 05:57

VSCodeでそのファイル開いて、下の方に出ている文字コード名はなにになってますか?
退会済みユーザー

退会済みユーザー

2021/01/04 06:17

「ページのソースを表示」(Firefox)したときに表示されるソースが化けてるってことでしょうか?
yo-Beginner03

2021/01/04 09:36

y_waiwai様 文字コードはUTF-8でございます。
yo-Beginner03

2021/01/04 09:41

m-ogura様 初心者のためよくわかっていませんが、 webブラウザ上に『聞くときに速く、語ることに遅くあるべき』と表示されるはずが 上記のようなコードと文字化けが発生してしまうのです。 回答になっているかわかりませんがご教授お願いします。
guest

回答1

0

自己解決

自己解決できました。
原因はアドレスの間違いという単純なものでした。失礼致しました。
×http://localhost:8080/Web/cgi-bin/kakugen.py
http://localhost:8080/cgi-bin/kakugen.py
webはいらないようです。
また、webディレクトリからサーバー起動しないと文字化けしてしまいます。

y_waiwa様、m-ogura様にはこの質問のために貴重なお時間いただきありがとうございました。

投稿2021/01/05 05:15

yo-Beginner03

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問