gpt4 book ai didi

python - Django 的 JSON 和 XML fixtures 导致 UnicodeEncodeError

转载 作者:可可西里 更新时间:2023-11-01 08:50:03 25 4
gpt4 key购买 nike

我使用 Django 的 dumpdata 命令创建了一个 JSON 文件。当我再次使用 syncdb 导入数据时,Python 抛出异常:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 231: ordinal not in range(128)

这一定与 JSON 文件有关(而不是我的 models.py),因为 --no-initial-data 不会出现该问题。现在我想知道我的编码在哪里混淆了。

JSON 文件包含类似 'Garc\u00eda Ram\u00f3n' 的字符串。当我使用 Python 使用 UTF-8 或 Latin1 手动编码实际字符串时,我得到:

>>> ustring = u'García Ramón'
>>> ustring.encode('utf-8')
'Garc\xc3\xada Ram\xc3\xb3n'
>>> ustring.encode('latin1')
'Garc\xeda Ram\xf3n'

为什么 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,但现在我卡住了。

最佳答案

你放了吗

#-*- coding: utf-8 -*-

到您的 .py 文件的顶部?

关于python - Django 的 JSON 和 XML fixtures 导致 UnicodeEncodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com