目录下有一堆 txt
文件,里边有中文,通过 python3 http.server
创建的文件服务器,通过 url
打开 txt
里边中文全是乱码,有什么办法解决吗,stackoverflow
找了个答案,尝试 charset=utf-8
也无济于事
1
ericls 2021-04-07 12:31:24 +08:00 via iPhone 1
这个需要浏览器处理吧……
|
2
ericls 2021-04-07 12:32:06 +08:00 via iPhone
我估计那些文件本来就不是 utf8 的
|
3
ungrown 2021-04-07 12:38:34 +08:00
同意楼上看法,这个问题没有可以完美解决的银子弹的,编码这个东西就算尝试去推测也依然会有例外,要么统一编码,要么想办法在文件里注明编码,要么就在浏览器端改解码方式
|
6
crab 2021-04-07 12:41:24 +08:00
浏览器自动识别的啊。测试了你说的这个情况正常。
|
7
cz5424 2021-04-07 12:43:32 +08:00 via iPhone
Win 下指定 gbk 看看
|
8
0TSH60F7J2rVkg8t 2021-04-07 12:44:39 +08:00
你需要设置的不是 http 的 charset 头,而是设置 content-type,给你的 content-type 增加下面一整行(注意别当两个 head 字段处理):
Content-Type:text/plain; charset=utf-8 |
9
lujjjh 2021-04-07 12:50:18 +08:00 2
方法 1
python3 -c "from http.server import SimpleHTTPRequestHandler as H, test; H.extensions_map['.txt'] = 'text/plain; charset=UTF-8'; test(H)" 方法 2 Chrome / Edge 安装 https://chrome.google.com/webstore/detail/set-character-encoding/bpojelgakakmcfmjfilgdlmhefphglae 插件,手动设置成 UTF-8 |
12
xcstream 2021-04-07 14:19:17 +08:00
浏览器不适合直接打开 txt
用 html 比较合适 |
13
lujjjh 2021-04-07 14:20:11 +08:00
@css3 方法 1 无效大概率是被你的浏览器缓存了,Python 的 http server 支持 If-Modified-Since
|
14
css3 OP |
16
turan12 2021-04-07 14:23:30 +08:00 via iPhone
header 加个 attachment,把文件做附件下载
|
18
waytoexplorewhat 2021-04-07 14:47:44 +08:00
我的做法是自己开一个项目,然后在返回 txt 的时候指定编码格式,总共也没有多少行代码
|
19
ch2 2021-04-07 14:54:20 +08:00 via iPhone
多了解一下 http 协议跟浏览器机制吧,你得告诉浏览器它是个啥玩意,要不然信息量不足,它就按默认的方式处理,当然是乱码的
|
20
love 2021-04-07 14:57:06 +08:00
python -m http.server 就别用了,这就是个玩具,有一大堆正经的同类开源软件不好吗
node 版的同类玩具 serve 都比这货好 10 倍 |
21
SenLief 2021-04-08 07:55:48 +08:00 via Android
http.server 是用来下来的,不是用来查看的。
|
23
FaiChou 2021-04-08 09:29:33 +08:00
https://s3.us-west-2.amazonaws.com/secure.notion-static.com/1224dc44-4b73-4528-8b87-e3ef1649f670/default_king_select.conf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAT73L2G45O3KS52Y5%2F20210408%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210408T012431Z&X-Amz-Expires=86400&X-Amz-Signature=4b2dbe306940581303ca8becc02f8d4ceeeaa3c8826c538e87a04831134c4510&X-Amz-SignedHeaders=host&response-content-disposition=filename%20%3D%22default_king_select.conf%22
你可以试试上面这个链接, 打开是不是乱码. 我手机和电脑都是英文系统, 所以手机和电脑打开都是中文乱码的. 在电脑 Chrome 装 Set Character Encoding 这个插件, 选上默认 utf-8 可以解决乱码. 在电脑 Safari 中, Preferences - Advanced - Default encoding - UTF-8, 可以解决乱码. 浏览器客户端自己可以解决. 我查看了一下 Chrome 这个插件, 会将请求的 `response header Content-Type: text/plain` 添加一个 `charset=utf-8` 所以浏览器正常解析了. |
24
css3 OP |