当前位置: 首页 > article >正文

Python HttpServer 的一个bug问题

如下图,创建一个httpserver,正常情况下这行代码是没问题的,但是如果碰到当前的windwos电脑名里含有中文(unicode,非 ascii)时就会报错。字符无效。

 File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\socketserver.py", line 452, in __init__
    self.server_bind()
  File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\http\server.py", line 140, in server_bind
    self.server_name = socket.getfqdn(host)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python38\lib\socket.py", line 756, in getfqdn
    hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte

调试跟踪到报错位置,可以发现    def getfqdn(name=''):  这个函数里 的name是个中文,从而导致出错了。 因为这里是python的内部库,不好修改。 往上查查看。

是在 HTTPServer 的 server_bind 里调用的。  那就简单了,我们用的

ThreadingHTTPServer 类 是继承自这个了类的。

 

我们定义一个子类 继承 ThreadingHTTPServer 并覆写  server_bind 方法,就能跳过这个bug了。

如下:

搞定。

相关文章: python http.server 的测试和常见问题解决方法-CSDN博客


http://www.kler.cn/a/421397.html

相关文章:

  • CTF-PWN glibc源码阅读[1]: 寻找libc中堆结构的定义(2.31-0ubuntu9.16)
  • Qt 2D绘图之三:绘制文字、路径、图像、复合模式
  • 【C语言】递归的内存占用过程
  • jvm-46-jvm Thread Dump 线程的信息获取+可视分析化工具 FastThread
  • React 路由与组件通信:如何实现路由参数、查询参数、state和上下文的使用
  • VScode离线下载扩展安装
  • The First项目报告:以太坊再质押赛道新星Swell Network
  • 2024年12月chrome131版本http自动跳转https解决
  • 【Unity基础】使用InputSystem实现物体跳跃
  • Zotero安装使用在线翻译Ubuntu
  • 数字运动_光影射箭(-->合作)
  • Vue前端页面内嵌套本项目iframe窗口的通信传输方式
  • 【深度学习|特征增强融合模块】MAF (Multi-scale Attention Fusion)一种多尺度的注意力融合模块
  • 原型模式的理解和实践
  • 小迪安全第四十二天笔记 简单的mysql注入 mysql的基础知识 用户管理数据库模式 mysql 写入与读取 跨库查询
  • 《从0到1常用Map集合核心摘要 + 不深不浅底层核心》
  • 网络安全内容整理二
  • Java基础面试题12:Java中的两种异常类型是什么?它们有什么区别?
  • AttributeError: ‘DataFrame‘ object has no attribute ‘append‘的参考解决方法
  • Linux67 绑定网卡【bonding和team】
  • 技术速递|Java on Azure Tooling 10月更新 - Azure 函数托管身份支持,Java on Azure 工具指南推出
  • Swift 宏(Macro)入门趣谈(五)
  • 【Anaconda】Anaconda3 下载与安装教程(Ubuntu 22.04)
  • SQL语法——DDL
  • 一键生成后端服务,MemFire Cloud重新定义开发效率
  • 基于Matlab SEIR模型的传染病传播分析与防控策略模拟