質問編集履歴

1

コードを画像で貼り付けてしまっていたのでコードブロックを使い書き直しました。

2021/03/16 05:31

投稿

RT.Leo
RT.Leo

スコア10

test CHANGED
File without changes
test CHANGED
@@ -14,29 +14,23 @@
14
14
 
15
15
  書籍を参考にwebアプリを作成し、webブラウザで表示をすると文字化けをしてしまいます。
16
16
 
17
+ 解決策をご教授ください。
18
+
17
19
 
18
20
 
19
21
  ソースコードはUTF8を使用しています。
20
22
 
21
23
 
22
24
 
23
- ### 発生している問題・エラメッセ
25
+ ### 該当のソスコ
24
26
 
25
- 本来は以下のうに運勢が表示されるはずが文字化けをしてしまいます。
27
+ 以下のソースコードはfortuneとい名前でcgi-binフォルダ保存しています。
26
28
 
27
- エラーコード出ていません
29
+ cgi-binフォルダpyworksとうフォルダの中にあり
28
30
 
29
- ![イメージ説明](f9cd9ea95d3cf54d6087acbc0467d55a.png)
31
+ ```python
30
32
 
31
- ![イメージ説明](d07985e673a01fc9c38cd64eb722530b.png)
33
+ #!/usr/bin/env python
32
-
33
-
34
-
35
- ### 試したこと
36
-
37
- ソースコードがUTF8になっているか確認をしました。
38
-
39
- 以下の対策コード書きました。
40
34
 
41
35
 
42
36
 
@@ -44,9 +38,129 @@
44
38
 
45
39
  import io
46
40
 
47
- sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding = 'utf-8')
48
41
 
49
42
 
43
+ sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
44
+
45
+ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
46
+
47
+ sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+ import random
56
+
57
+ import cgitb
58
+
59
+ cgitb.enable()
60
+
61
+
62
+
63
+ html_body = '''<html>
64
+
65
+ <head>
66
+
67
+ <meta charset = ''UTF-8''>
68
+
69
+ <title>今日の運勢</title>
70
+
71
+ </head>
72
+
73
+ <body>
74
+
75
+ 今日のあなたの運勢は{}です。
76
+
77
+ </body>
78
+
79
+ </html>'''
80
+
81
+
82
+
83
+ todays_fortune = random.choice(['大吉','中吉','吉','末吉','凶','大凶',])
84
+
85
+
86
+
87
+
88
+
89
+ print("Content-type:text/html")
90
+
91
+ print("")
92
+
93
+ print(html_body.format(todays_fortune))
94
+
95
+
96
+
97
+ ```
98
+
99
+ ### 発生している問題・エラーメッセージ
100
+
101
+ エラーコードは出ていません。
102
+
103
+
104
+
105
+ 本来出力されるはずの文字
106
+
107
+ ```ここに言語を入力
108
+
109
+ 今日のあなたの運勢は〇〇です。
110
+
111
+ ```
112
+
113
+ 実際に出力される文字
114
+
115
+ ```ここに言語を入力
116
+
117
+ 莉頑律縺ョ縺ゅ↑縺溘�驕句兇縺ッ螟ァ蜷峨〒縺吶
118
+
119
+ ```
120
+
121
+
122
+
123
+ ### 試したこと
124
+
125
+ ・ソースコードがUTF8になっているか確認をしました。
126
+
127
+ ・safariとgooglechrome両方で試しましたが両方で文字化けが確認されました。
128
+
129
+ ・以下の対策コード書きました。
130
+
131
+ ```python
132
+
133
+ import sys
134
+
135
+ import io
136
+
137
+
138
+
139
+ sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
140
+
141
+ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
142
+
143
+ sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
144
+
145
+
146
+
147
+ ```
148
+
149
+
150
+
151
+ サーバー起動コマンドです。
152
+
153
+ pyworksフォルダから起動しました。
154
+
155
+
156
+
157
+ ※pyworksフォルダの中にcgi-binフォルダがあります。
158
+
159
+ ```ここに言語を入力
160
+
161
+ python -m http.server --cgi
162
+
163
+ ```
50
164
 
51
165
 
52
166
 
@@ -56,14 +170,6 @@
56
170
 
57
171
  pythonバージョン:3.8.5
58
172
 
59
- ブラウザ:safari
173
+ ブラウザ:safari, googlechrome
60
174
 
61
175
  エディタ:Spyder(python3,8),VSCode
62
-
63
-
64
-
65
- コードとターミナルの画像を一応載せておきます。
66
-
67
- よろしくお願いいたします。![イメージ説明](020237c53cf2c9d3c569b0d61afdd82a.png)
68
-
69
- ![![イメージ説明](05dfd77ebdc0698a9bf3dfbf3fe85ae9.png)](c67f8d0f12e8f7901870db920872d470.png)