我使用Django的dumpdata
命令创建了一个JSON文件。当我用syncdb
再次导入数据时,Python抛出一个异常:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 231: ordinal not in range(128)
这必须与JSON文件相关(而不是我的模型.py),因为--no-initial-data
不会出现问题。现在我想知道我的编码哪里弄混了。在
JSON文件包含类似'Garc\u00eda Ram\u00f3n'
的字符串。当我用Python用UTF-8或Latin1手动编码实际字符串时,我得到:
为什么syncdb会阻塞dumpdata的输出?我能做些什么来阻止这一切?源数据库和目标数据库(分别是MySQL和PostgreSQL)都使用UTF-8。在
更新:使用XML作为序列化格式时会发生完全相同的情况,并使用正确的编码声明:
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
[...]
<field type="CharField" name="last_name">García Ramón</field>
我不知道Django在什么时候试图使用ascii编解码器对ü
(u'\xfc'
)进行编码(以及我如何改变它)。我将问题追溯到xml_serializer.py
中的第185行:
self.xml = SimplerXMLGenerator(self.stream, self.options.get("encoding", settings.DEFAULT_CHARSET))
并将DEFAULT_CHARSET='utf-8'
添加到settings.py
中,但现在我卡住了。在
你把
在你的.py文件的顶部?在
相关问题 更多 >
编程相关推荐