我在 Django 中将数据转储到 JSON 时收到 UnicodeDecodeError,Unicode 无法识别俄语字母的字符

I got UnicodeDecodeError in Django while dumping data into JSON, Unicode does not recognize characters of the Russian alphabet

提问人:MorS 提问时间:2/16/2023 更新时间:7/8/2023 访问量:117

问:

我是 Django 的新手,所以我需要一些帮助。 我需要创建夹具并使用此命令完成

python manage.py dumpdata products.ProductCategory > category.json

然后我得到了这个

  {
    "model": "products.productcategory",
    "pk": 1,
    "fields": {
      "name": "╬фхцфр",
      "description": "╬яшёрэшх юфхцф√"
    }
  }

当我尝试加载数据时,Django 给了我一个错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

有没有办法对此 JSON 进行编码或正确转储数据?

我在文档中搜索了一下,但不幸的是我没有找到任何有价值的东西

python json django 编码 utf-8

评论


答:

0赞 eliaseraphim 2/16/2023 #1

发布完整的堆栈跟踪很有帮助,因为如果没有它,就很难确定错误的来源。您是否可以更新您的问题以包含错误的完整堆栈跟踪?loaddata

话虽如此,您的数据库可能未配置为使用 UTF-8。根据您使用的数据库系统,您可能需要添加额外的配置。

请参阅此处的文档:https://docs.djangoproject.com/en/4.1/ref/unicode/

如果您使用的是 SQLite,则无需进行任何额外的配置。

请注意,有一个输出选项:。这可以代替 .完整的命令是:dumpdata-o OUTPUT>

python manage.py dumpdata products.ProductCategory -o category.json

您可以尝试的最后一件事是:

  • 在记事本中打开文件。
  • 选择另存为
  • 选择编码“UTF-8”。
  • 保存文件。

请参阅此处:Python:是否可以转储数据无法加载数据。UnicodeDecodeError

评论

0赞 MorS 2/24/2023
“全栈跟踪”到底是什么意思?
0赞 MorS 2/24/2023
我尝试了 -o 方法,但现在我的俄语字符变成了 现在 Pycharm 让我将编码更改为 windows-1251
0赞 eliaseraphim 2/25/2023
您可以在运行命令时发布完整的错误消息吗?loaddata