我经常使用以下命令快速启动 Web 服务器以提供当前文件夹中的 HTML 内容(用于本地测试):
python -m SimpleHTTPServer 8000
有没有一种相当简单的方法可以做到这一点,但是让服务器使用 UTF-8 编码而不是系统默认编码来提供文件?
有同样的问题,下面的代码对我有用。
要使用 UTF-8 编码启动 SimpleHTTPServer,只需在终端中复制/粘贴以下内容(对于 Python 2)。
python -c "import SimpleHTTPServer; m = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map; m[''] = 'text/plain'; m.update(dict([(k, v + ';charset=UTF-8') for k, v in m.items()])); SimpleHTTPServer.test();"
确保您事先在 HTML 文件中具有正确的字符集。
编辑:Python 3 的更新:
python3 -c "from http.server import test, SimpleHTTPRequestHandler as RH; RH.extensions_map={k:v+';charset=UTF-8' for k,v in RH.extensions_map.items()}; test(RH)"
该test
函数还接受诸如和之类的参数port
,bind
因此可以指定要侦听的地址和端口。
您也可以使用 Python 脚本运行它。
from functools import partial
from http.server import SimpleHTTPRequestHandler, test
import os
print('http://localhost:8000/')
wk_dir = os.getcwd()
SimpleHTTPRequestHandler.extensions_map = {k: v + ';charset=UTF-8' for k, v in SimpleHTTPRequestHandler.extensions_map.items()}
test(HandlerClass=partial(SimpleHTTPRequestHandler, directory=wk_dir), port=8000, bind='')
由于test
is not in http.server.__all__
so IDE 可能会显示警告,如果您不想看到它,可以使用importlib
它来代替它。例如:
import importlib
http_server = importlib.import_module('http.server')
http_server.test(HandlerClass=partial(SimpleHTTPRequestHandler, directory=wk_dir), port=8000, bind='')