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

启动Django本地服务器时遭遇UnicodeDecodeError错误求助

Django启动时UnicodeDecodeError问题解决(PostgreSQL连接场景)

问题描述

执行python manage.py runserver或python manage.py runserver 127.0.0.1:8080时触发以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 55: invalid continuation byte

错误栈显示问题根源在psycopg2连接PostgreSQL的环节,且执行SELECT version()返回乱码内容,此前修改Windows用户名未解决问题。

使用技术栈:

  • Python 3.11.5
  • Django 4.2.4
  • PostgreSQL 15.4(64位,Windows环境)

解决方案

1. 强制指定数据库连接编码

在Django项目的settings.py中,为数据库配置添加OPTIONS指定客户端编码为UTF8:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '你的数据库名称',
        'USER': '你的数据库用户',
        'PASSWORD': '你的数据库密码',
        'HOST': '127.0.0.1',
        'PORT': '5432',
        'OPTIONS': {
            'client_encoding': 'UTF8',
        },
    }
}

2. 调整PostgreSQL全局编码配置

找到PostgreSQL安装目录下data文件夹中的postgresql.conf,修改以下参数:

client_encoding = 'UTF8'
default_encoding = 'UTF8'

修改完成后重启PostgreSQL服务。

3. 验证并修复数据库编码

登录PostgreSQL命令行,执行以下命令检查编码:

-- 查看所有数据库的编码
SELECT datname, encoding FROM pg_database;
-- 查看目标用户的编码配置
SELECT usename, useconfig FROM pg_user WHERE usename = '你的数据库用户';

如果目标数据库编码不是UTF8,需重新创建数据库并指定编码:

CREATE DATABASE 你的数据库名称 WITH ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;

4. 解决Windows系统编码冲突

在Windows环境中,可通过设置环境变量强制Python使用UTF8编码:

  • 临时生效:启动命令行后执行set PYTHONUTF8=1,再运行python manage.py runserver
  • 永久生效:在系统环境变量中添加PYTHONUTF8=1(用户变量或系统变量均可)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:05:41