返回 Bug 清单
BUG-0050project-09高已修复db-connection-encoding
Windows 中文环境下 psycopg2 UnicodeDecodeError
发现:2026-09-30验证:2026-10-27置信度:85%
症状
Windows 中文环境下执行 `alembic upgrade head`,psycopg2 报错:
```
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 61: invalid continuation byte
```
([cursor_202606072236.md:466](file://d:/chemindra/cursor_202606072236.md#L466)、[cursor_202606072236.md:538](file://d:/chemindra/cursor_202606072236.md#L538) 两次重现)
根因
libpq 在连接失败时返回系统语言编码(GBK)的错误信息,psycopg2 尝试以 UTF-8 解码失败。Windows 中文环境下 `.env` 中的特殊字符也被错误编码传递。
修复方案
(`commit 1d6a90d` `fix: Windows 本地 PostgreSQL 开发与 bcrypt 兼容`):
1. `config.py` 启动时设置 `os.environ.setdefault("PGCLIENTENCODING", "UTF8")`
2. `session.py` 连接参数添加 `client_encoding="utf8"` + `connect_timeout=10`
3. `alembic/env.py` 同样添加 `client_encoding` 和 `PGCLIENTENCODING`
4. Settings 同时从 `_SERVER_ROOT / .env` 和 `_REPO_ROOT / .env` 查找
修复命令
(`commit 1d6a90d` `fix: Windows 本地 PostgreSQL 开发与 bcrypt 兼容`):
1. `config.py` 启动时设置 `os.environ.setdefault("PGCLIENTENCODING", "UTF8")`
2. `session.py` 连接参数添加 `client_encoding="utf8"` + `connect_timeout=10`
3. `alembic/env.py` 同样添加 `client_encoding` 和 `PGCLIENTENCODING`
4. Settings 同时从 `_SERVER_ROOT / .env` 和 `_REPO_ROOT / .env` 查找错误签名
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 61: invalid continuation byte技术信息
来源项目
project-09
涉及文件
apps/server/app/core/config.py, apps/server/app/db/session.py, apps/server/alembic/env.py
标签
db-connection-encoding, project-09