Django导出JSON遇UnicodeDecodeError,俄文字符无法识别求助
解决Django dumpdata俄文乱码与loaddata解码错误问题
针对你遇到的问题,直接给出可行解决方案:
方案1:使用Django原生参数导出(推荐)
不要用命令行的>重定向,改用dumpdata自带的--output参数,Django会自动以UTF-8编码生成文件,彻底规避编码不匹配问题:
python manage.py dumpdata products.ProductCategory --output category.json
方案2:强制命令行使用UTF-8编码(适用于必须用重定向的场景)
如果你的环境是Windows,默认命令行编码为GBK,会导致UTF-8输出被转码乱码。先执行命令切换编码:
chcp 65001
再执行原重定向命令:
python manage.py dumpdata products.ProductCategory > category.json
修复已生成的乱码文件
如果已经有了乱码的category.json,可以用VS Code、Notepad++等编辑器打开,选择**编码为UTF-8(无BOM)**后重新保存,再执行loaddata即可。
问题原因
- 命令行重定向会使用系统默认编码(Windows下多为GBK),而Django的
dumpdata默认输出UTF-8编码内容,两者不匹配导致俄文乱码。 - 报错里的
0xff是UTF-16 BOM的起始字节,说明你的乱码文件被存成了UTF-16编码,但loaddata默认以UTF-8读取,因此触发解码错误。
内容的提问来源于stack exchange,提问作者MorS
相关产品推荐
相关产品推荐

