You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django连接PostgreSQL数据库时出现Unicode编码解码错误求助

Django连接PostgreSQL时的UnicodeDecodeError解决方法

问题详情

报错信息:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 86: invalid start byte

错误触发位置:

File "C:\Users\Robo\Desktop\Stock\venv\Lib\site-packages\psycopg2\__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

已尝试但无效的数据库配置:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "Stocks",
        "USER": "postgres",
        "PASSWORD": "password",
        "HOST": "127.0.0.1",
        "PORT": "5432",
        "encoding": "utf-8",

    }
}

解决步骤

1. 修正Django数据库配置参数

Django的PostgreSQL后端不支持直接写encoding参数,需将编码配置放在OPTIONS字典的client_encoding字段下:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "Stocks",
        "USER": "postgres",
        "PASSWORD": "password",
        "HOST": "127.0.0.1",
        "PORT": "5432",
        "OPTIONS": {
            "client_encoding": "utf8",
        },
    }
}

2. 检查目标数据库的编码

登录PostgreSQL命令行,执行\l查看Stocks数据库的编码,确认其为UTF8。若编码不符,需重新创建数据库:

CREATE DATABASE Stocks ENCODING 'UTF8';

3. 排查系统编码环境

Windows系统默认编码可能为非UTF8,可通过设置环境变量强制Python使用UTF8:

set PYTHONUTF8=1

设置后再启动Django项目。

4. 验证数据库凭证字符编码

确认数据库用户名、密码、数据库名中没有非UTF8编码的特殊字符,若有则替换为UTF8兼容字符,或暂时使用纯ASCII凭证测试连接。

内容的提问来源于stack exchange,提问作者Robert Wyszynski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:31:03