Python HttpServer 的一个bug问题

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

bash 复制代码
 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博客

相关推荐
二哈喇子!17 小时前
Python报错:SyntaxError: invalid character ‘,‘ (U+FF0C)
python
走遍西兰花.jpg17 小时前
hive如何使用python脚本
数据仓库·hive·hadoop·python
小镇学者17 小时前
【python】python有必要像go或者nodejs那样做多版本切换吗?
开发语言·python·golang
2501_9192190417 小时前
画册设计尺寸在不同设备(手机/平板)显示差异如何处理?
python·智能手机·电脑
子午18 小时前
【2026原创】眼底眼疾识别系统~Python+深度学习+人工智能+CNN卷积神经网络算法+图像识别
人工智能·python·深度学习
ACERT33318 小时前
10.吴恩达机器学习——无监督学习01聚类与异常检测算法
python·算法·机器学习
小北方城市网18 小时前
Spring Security 认证授权实战(JWT 版):从基础配置到权限精细化控制
java·运维·python·微服务·排序算法·数据库架构
诗词在线18 小时前
从算法重构到场景复用:古诗词数字化的技术破局与落地实践
python·算法·重构
Zsh-cs18 小时前
苍穹外卖day11销量TOP10商品展示,前端有商品名字但无销量(已解决)
bug
Vv1997_18 小时前
基于java.awt 绘制 自定义图片算式验证码
java·开发语言·python