执行 : python manage . py loaddata data . json 的常见错误 :
* 1. UnicodeDecodeError : 'utf-8' codec can ' t decode byte 0xff in position 0 : invalid start byte
* 2. raise JSONDecodeError ( "Unexpected UTF-8 BOM (decode using utf-8-sig)" ,
. . .
django . core . serializers . base . DeserializationError : Problem installing fixture 'D:\MyDjango\data.json' :
使用 python manage . py dumpdata > data . json 语句导出的文件编码为utf16 ( BOM符合无需理会 )
使用 python manage . py loaddata data . json 语句导入文件报错 :
UnicodeDecodeError : 'utf-8' codec can ' t decode byte 0xff in position 0 : invalid start byte
万恶的PowerShell重定向时默认的文本编码是UTF- 16 LE , 简直反人类!
Pycharm中无法直接修改编码格式 , 要求太多了 . . .
使用Notepad2编辑器直接修改编码为UTF8 .
再次执行 , 则成功 . . .
使用别的语句虽然创建了utf8文件 , 但是加载的时候又出现了错误 .
文件包含了一个UTF- 8 字节顺序标记 ( BOM ) , 而Django的JSON反序列化器期望的是没有BOM的UTF- 8 编码。
python manage. py dumpdata | Out- File data. json
python manage. py dumpdata | Out- File data. json - Encoding utf8
$PSDefaultParameterValues[ 'Out-File:Encoding' ] = 'utf8'
万恶的PowerShell重定向时设置默认的文本编码为UTF- 8 时 , 携带BOM , . . . . CCC!
错误信息显示你在尝试使用 python manage . py loaddata data . json 命令加载fixture时遇到了
json . decoder . JSONDecodeError : Unexpected UTF- 8 BOM ( decode using utf- 8 -sig ) 错误 .
这表明导出的 data . json 文件包含了一个UTF- 8 字节顺序标记 ( BOM ) , 而Django的JSON反序列化器期望的是没有BOM的UTF- 8 编码 .
别急这里Pycharm提供了移除BOM的功能 . . .
再次执行就成功了 . . .