跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • python3 http.server 作为小文件服务器时,通过 url 访问文件遇到中文乱码怎么处理?
未分類
19 4 月 2021

python3 http.server 作为小文件服务器时,通过 url 访问文件遇到中文乱码怎么处理?

python3 http.server 作为小文件服务器时,通过 url 访问文件遇到中文乱码怎么处理?

資深大佬 : css3 7

目录下有一堆 txt 文件,里边有中文,通过 python3 http.server 创建的文件服务器,通过 url 打开 txt里边中文全是乱码,有什么办法解决吗,stackoverflow 找了个答案,尝试 charset=utf-8 也无济于事

大佬有話說 (24)

  • 資深大佬 : ericls

    这个需要浏览器处理吧……

  • 資深大佬 : ericls

    我估计那些文件本来就不是 utf8 的

  • 資深大佬 : ungrown

    同意上看法,这个问题没有可以完美解决的银子弹的,编码这个东西就算尝试去推测也依然会有例外,要么统一编码,要么想办法在文件里注明编码,要么就在浏览器端改解码方式

  • 主 資深大佬 : css3

    @ericls 是 utf-8

  • 主 資深大佬 : css3

    @ungrown 浏览器怎么改

  • 資深大佬 : crab

    浏览器自动识别的啊。测试了你说的这个情况正常。

  • 資深大佬 : cz5424

    Win 下指定 gbk 看看

  • 資深大佬 : ahhui

    你需要设置的不是 http 的 charset 头,而是设置 content-type,给你的 content-type 增加下面一整行(注意别当两个 head 字段处理):
    Content-Type:text/plain; charset=utf-8

  • 資深大佬 : lujjjh

    方法 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

  • 主 資深大佬 : css3

    @ahhui 方法一无效,方法 2 还未尝试

  • 主 資深大佬 : css3

    @lujjjh 方法一无效,方法 2 还未尝试

  • 資深大佬 : xcstream

    浏览器不适合直接打开 txt
    用 html 比较合适

  • 資深大佬 : lujjjh

    @css3 方法 1 无效大概率是被你的浏览器缓存了,Python 的 http server 支持 If-Modified-Since

  • 主 資深大佬 : css3

    @lujjjh

    @ahhui 我看了一下好像没有生效呐,response_headers 里边的 Content-Type: text/plain 还是默认值

  • 主 資深大佬 : css3

    @lujjjh 我也认为是缓冲,还特意在无痕模式下验证了一下

  • 資深大佬 : turan12

    header 加个 attachment,把文件做附件下载

  • 主 資深大佬 : css3

    @turan12 就是要在线预览

  • 資深大佬 : waytoexplorewhat

    我的做法是自己开一个项目,然后在返回 txt 的时候指定编码格式,总共也没有多少行代码

  • 資深大佬 : ch2

    多了解一下 http 协议跟浏览器机制吧,你得告诉浏览器它是个啥玩意,要不然信息量不足,它就按默认的方式处理,当然是乱码的

  • 資深大佬 : love

    python -m http.server 就别用了,这就是个玩具,有一大堆正经的同类开源软件不好吗
    node 版的同类玩具 serve 都比这货好 10 倍

  • 資深大佬 : SenLief

    http.server 是用来下来的,不是用来查看的。

  • 主 資深大佬 : css3

    @SenLief 小文件看下还是可以的,挺方便

  • 資深大佬 : FaiChou

    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` 所以浏览器正常解析了.

  • 主 資深大佬 : css3

    @FaiChou 乱的

    https://i.loli.net/2021/04/08/2v8uMAsxoz5qpgS.png

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具