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

Windows环境下DRF+PostgreSQL项目UnicodeDecodeError问题求助

解决Windows 10下Django+PostgreSQL 17的UnicodeDecodeError问题

以下是针对Windows环境的可行解决办法,按优先级尝试:

  • 强制指定PostgreSQL客户端编码为UTF-8
    Windows下PostgreSQL默认客户端编码可能与Django的UTF-8要求不匹配,直接在项目settings.py的数据库配置里添加编码参数:

    DATABASES = {
        'default': {
            # 保留原有数据库配置(NAME/USER/PASSWORD等)
            'OPTIONS': {
                'client_encoding': 'UTF8',
            },
        }
    }
    

    也可以修改PostgreSQL的postgresql.conf(路径一般为C:\Program Files\PostgreSQL\17\data),将client_encoding设为UTF8,修改后重启PostgreSQL服务。

  • 设置系统全局UTF-8编码
    Windows默认采用GBK编码,这是跨平台编码冲突的常见根源:

    1. 打开「控制面板」→「区域」→「管理」→「更改系统区域设置」
    2. 勾选「Beta版:使用Unicode UTF-8提供全球语言支持」
    3. 重启电脑
      注意:该设置可能导致部分老软件出现乱码,需根据自身使用场景权衡。
  • 统一项目文件编码
    拉取的代码中可能存在非UTF-8编码的文件(比如同事在Ubuntu环境下用特殊编码保存的文件)。用VS Code等编辑器打开报错位置的文件,转换为UTF-8编码后保存。
    同时在pytest.ini中添加编码配置,确保测试时用UTF-8解析:

    [pytest]
    encoding = utf-8
    
  • 强制Python使用UTF-8编码
    在Windows系统环境变量中新增配置:

    • 变量名:PYTHONUTF8,变量值:1
      该设置会让Python 3默认以UTF-8处理编码,避免系统编码干扰。添加后重启终端或IDE,再运行项目或测试。
  • 检查数据库本身的编码
    如果数据库创建时采用了非UTF-8编码,也会触发解码错误。登录PostgreSQL执行以下命令查看编码:

    SELECT datname, pg_encoding_to_char(encoding) FROM pg_database;
    

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

    CREATE DATABASE your_db_name WITH ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
    

    之后重新迁移数据即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:06:08