为什么说程序员重命名时电脑不要带中文?记一次python manage.py runserver时UnicodeDecodeError的原因与解决方案

运行环境:

Win11系统,Anaconda Prompt,名为'rango'的虚拟环境,Edge浏览器。


问题描述

最近在根据《Tango with Django》这本书学习Django,结果在Anaconda黑窗口启用虚拟环境运行python manage.py runserver命令时意外报了 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 8: invalid continuation byte的错误。该错误在重建 Django 项目、重新创建虚拟环境后仍然稳定复现,说明问题不在项目代码层面。

完整黑窗口命令以及报错记录如下:(JerryKing是我windows的本地用户名,Workspace是我练习django的文件夹,有类似情况的朋友路径应该是C:\Users\<你的username>\<你的workspace>)

复制代码

原因分析:

从上面图中 traceback 的最底部几行可以定位到关键调用链:

HTTPServer.server_bind(self)--socket.getfqdn(host)--socket.gethostbyaddr(name)

还有经常与中文字符问题相关的'utf-8'字样。

找到socket.py中的getfqdn(),本例中的name应该是127.0.0.1

错误就发生在这一行。

在 Windows 系统上,socket.gethostbyaddr() 会通过系统 API 反向解析本机 IP 地址,并返回当前电脑的 hostname(主机名)。

当调用 gethostbyaddr('127.0.0.1') 时,Windows 网络栈将该地址识别为本机回环地址 ,并返回当前主机名。

由于 Windows 返回的主机名使用本地编码(如 GBK),而 Python 标准库在接收该返回值时假定其为 UTF-8 编码,导致在解码阶段抛出 UnicodeDecodeError(Python 甚至"没来得及"成功给 hostname 赋值)。

而本人前几日在Windows的设置-系统中对电脑进行过重命名操作,且包含中文!

这就解释了为何会有UnicodeDecodeError但报错信息中未直接出现中文。


解决方案:

在Windows的设置-系统中对电脑进行重命名操作,且重命名后的主机名不能包含中文(即使windows允许你这么做)。重命名后重启电脑即可。

其他的碎碎念:

刚发现这个问题的时候,我实际上是直接把trackback丢给某知名国际GenAI了,但是其回复的方案是修改命令为python manage.py runserver 127.0.0.1:8000或者python manage.py runserver localhost:8000,但是都没用,问了四五遍还是在讲车轱辘话,再加上重新敲安装命令+反复测试又浪费了人生宝贵的30min。最后不得不动用脑细胞去看报错信息,找到对应的代码,然后又联想到前几日进系统设置修改过主机名,还带了中文字符,这才反应过来,实测修改为不含中文的主机名后就没有报错了。

这次经历我觉得有意义/有趣的一个地方在于,这个错误是由于一个看似不起眼的"局外"因素导致的------带有中文字符的主机名居然会导致runserver失败。这跟我平时"代码报错那肯定是代码哪里写错了"+"带utf-8的报错肯定是代码文件里带了中文导致的"的经验与思维惯性不同,这次代码文件没有任何问题,文件中也不含任何中文字符,但是还是出现了UTF-8解码错误,追根溯源竟然是主机名中的中文影响了程序的正常运行,而我也仅仅是前几天心血来潮才会去修改主机名(我猜大多数用户都不会这么做吧?),过了一阵子就导致了这么严重的后果。(假如这是我打开了辛苦编程了多日的网页项目,结果因为不明原因倒在了runserver这一步,因为看见了熟悉的utf8就想当然地去给所有代码文件都加了防止编码问题的代码,结果还是出问题然后心态崩溃+浪费大量精力时间balabalabala。)

另外还有一点我觉得这次经历是一个教训,我自己偷懒去问GenAI,但是被GenAI带偏后不自知还花大量时间做了很多无用功。而实际上当我开始动脑去找代码,看具体程序流,再到解决问题也就花了5分钟。把这当作一个教训,继续学习吧。

相关推荐
回眸&啤酒鸭5 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智5 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
默_笙5 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
AI的探索之旅5 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein5 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu5 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
qq_426003965 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk