Ele*_* Kr 4 python django postgresql json
我已经使用Python 2.7,Django 1.5和PostgreSQL 9.2两周了.从来没有见过它.所有东西都安装在我的Windows 7机器上,所以应该有默认设置.Django在我的数据库中精美地生成表.看起来一切正常.我可以通过运行以下方式从我的数据库转储数据:
manage.py dumpdata > test.json
Run Code Online (Sandbox Code Playgroud)
要么
manage.py dumpdata --indent4 > test.json
Run Code Online (Sandbox Code Playgroud)
我看到它看起来应该是JSON文件.
然后,我截断一些表并尝试从JSON文件加载它们:
python manage.py loaddata database = T2 test.json // or without db name
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0xff:无效的起始字节"
如果我在记事本中打开test.json文件,保存为utf8,然后再试一次,然后我得到:
"没有JSON对象可以被解码"
该文件看起来还不错,不是空的.
顺便说一句,当我用记事本打开JSON文件时,它允许我将其保存为Unicode.我的数据库有UTF8编码.请指教.谢谢.
Duc*_*own 10
对我有用的是遵循以下步骤:
- Open the file in regular notepad
- Select save as
- Select encoding "UTF-8" (Not "UTF-8 (With BOM)")
- Save the file.
Run Code Online (Sandbox Code Playgroud)
现在您可以使用 loaddata。
但是,这只适用于小到足以让记事本打开的文件。
0xff位置0看起来像是一个小尾数UTF-16 字节顺序标记的开头给我.记事本的"Unicode"保存模式是小端UTF-16,因此如果您在创建它后从记事本中保存了json,这是有意义的.记事本甚至会在utf-8中保留字节顺序标记,这可能会导致loaddata无法解析它.
如果您没有未编辑的json仍然很方便,您需要删除BOM - 我个人使用emacs,但另一个答案建议使用这个独立的Windows .exe:
http://www.bryntyounce.com/filebomdetector.htm
| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |