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

如何解决SQLite3迁移PostgreSQL时的UnicodeDecodeError编码错误?

解决Django loaddata时的UnicodeDecodeError问题

这个错误的核心原因是Windows命令行用>重定向生成的dump.json是UTF-16 LE编码(带BOM头0xff),而Ubuntu服务器上的Django默认以UTF-8解码文件,导致编码不匹配。以下是几种可行的解决方法:

方法一:重新生成UTF-8编码的dump文件(推荐)

在Windows本地生成备份时,直接指定UTF-8编码,避免默认的UTF-16:

  • 用PowerShell执行:
    python manage.py dumpdata | Out-File -Encoding UTF8 dump.json
    
  • 若用CMD,先切换编码为UTF-8再生成:
    chcp 65001 && python manage.py dumpdata > dump.json
    

方法二:转换现有dump文件的编码

如果已经生成了带编码问题的dump.json,可以在Ubuntu服务器上用iconv工具转换编码:

# 将UTF-16 LE编码的文件转为UTF-8
iconv -f utf-16le -t utf-8 dump.json > dump_utf8.json
# 用转换后的文件恢复数据
python manage.py loaddata dump_utf8.json

也可以在Windows下用记事本打开dump.json,选择「另存为」,编码选「UTF-8」后保存,再上传到服务器。

额外注意事项

  • 确保本地和服务器的Django版本一致,避免序列化/反序列化的兼容性问题
  • 恢复数据前,务必在服务器上执行过python manage.py migrate,确保数据库表结构已创建
  • 你之前删除ContentType的操作是正确的,能避免跨数据库迁移时的主键冲突问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:36:25