启动Flask服务器时遭遇UnicodeDecodeError错误求助
Flask启动报错:UnicodeDecodeError 解决方法
启动最简Flask代码时触发以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99 in position 0: invalid start byte
使用的代码:
from flask import Flask app = Flask(__name__) app.run(debug=True, port=5000)
报错原因
从堆栈信息可以看出,问题出在Flask自动加载.env环境变量文件时——Flask默认用UTF-8编码读取该文件,但你的.env文件实际是其他编码格式(比如Windows-1252、GBK等),导致解码失败。
解决方法
1. 删除或转换.env文件编码
- 不需要.env文件:直接删除当前目录下的
.env文件,重新启动Flask即可。 - 需要保留.env文件:将文件编码转换为UTF-8:
- Linux/macOS终端执行:
# 假设原编码是Windows-1252,可根据实际情况调整 iconv -f windows-1252 -t utf-8 .env > .env.utf8 && mv .env.utf8 .env - Windows系统:用记事本打开
.env,点击「文件」→「另存为」,编码选择「UTF-8」后覆盖原文件。
- Linux/macOS终端执行:
2. 手动指定.env文件编码加载
在代码中手动调用load_dotenv并指定正确编码:
from flask import Flask from dotenv import load_dotenv # 替换为你的.env文件实际编码,比如windows-1252、gbk等 load_dotenv(encoding='windows-1252') app = Flask(__name__) app.run(debug=True, port=5000)
3. 禁用Flask自动加载dotenv
如果不需要加载任何.env文件,通过环境变量跳过自动加载:
- Linux/macOS:
export FLASK_SKIP_DOTENV=1 && python your_app.py - Windows(cmd):
set FLASK_SKIP_DOTENV=1 && python your_app.py - Windows(PowerShell):
$env:FLASK_SKIP_DOTENV=1; python your_app.py
验证
执行上述任一操作后,重新启动Flask服务器,确认错误消失。
内容的提问来源于stack exchange,提问作者Danwand N S
相关产品推荐
相关产品推荐

