You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.6.4中http.server(CGI模式)中文显示与提交异常求助

解决CGI页面中文乱码与提交后空白问题

针对你遇到的两个问题,我来一步步帮你排查修复:

1. 修复test.py页面中文乱码问题

你当前页面中文显示乱码,核心原因是HTTP响应头未明确指定字符编码——虽然HTML里加了meta标签,但浏览器会优先遵循HTTP响应头的设置,而你只写了Content-Type: text/html,没带charset参数,导致浏览器可能默认用非UTF-8编码解析页面。

修改cgi-bin/test.py代码如下:

# coding=utf-8
from __future__ import unicode_literals, absolute_import
# 响应头明确指定UTF-8编码,让浏览器直接用UTF-8解析
print("Content-Type: text/html; charset=utf-8")
print()
reshtml = '''<!DOCTYPE html> 
<html lang="zh-CN"> 
<head>
    <!-- 修正meta标签标准写法,把charset整合到content属性中 -->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
</head> 
<body> 
<div style="text-align: center;"> 
    <form action="/cgi-bin/test_form_action.py" method="POST" target="_blank"> 
        输入:<input type="text" id="id" name="name"/>
        <button type="submit">Submit</button> 
    </form> 
</div> 
</body> 
</html>'''
print(reshtml)

主要改动:

  • 响应头追加; charset=utf-8,强制浏览器使用UTF-8编码
  • 修正meta标签的规范写法,避免浏览器解析歧义
  • 将页面语言设置为zh-CN,更贴合中文场景

修改后无需手动切换浏览器编码,页面中文就能正常显示。

2. 修复提交中文后test_form_action.py页面空白问题

页面空白有两个关键原因:参数获取不匹配和输出内容不规范。

看你的test.py里的输入框,name="name",但你在action代码里用form.getvalue("id")获取参数,完全不匹配,导致拿到的是None,打印后页面几乎看不到内容;另外,响应头同样需要指定UTF-8编码,否则输出的中文会乱码或无法显示。

修改cgi-bin/test_form_action.py代码如下:

# coding=utf-8
from __future__ import unicode_literals, absolute_import
import cgi, cgitb
cgitb.enable()

if __name__ == '__main__':
    # 响应头同样要指定UTF-8编码,确保输出中文正常显示
    print("Content-Type: text/html; charset=utf-8")
    print()
    form = cgi.FieldStorage()
    # 匹配输入框的name属性,用"name"作为参数key
    input_content = form.getvalue("name")
    # 输出结构化HTML内容,避免页面空白
    print("<h3>提交结果:</h3>")
    print(f"<p>你输入的内容是: {input_content}</p>")

主要改动:

  • 响应头添加; charset=utf-8,保证输出编码正确
  • 将form.getvalue("id")改为form.getvalue("name"),匹配输入框的name属性
  • 添加结构化HTML输出,让提交结果清晰可见(原代码仅打印空值或对象,页面无有效内容)

额外注意事项

  • 若在Linux/macOS环境下,需给cgi-bin目录下的py文件添加执行权限:chmod +x cgi-bin/*.py
  • Python3的cgi模块对中文支持已很完善,只要保持响应头、页面编码统一为UTF-8,就不会出现乱码问题

内容的提问来源于stack exchange,提问作者GoTop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:55:20