UnicodeDecodeError:“utf8”编解码器无法解码位置460处的字节0xe9:无效的连续字节

2024-06-28 20:04:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django应用程序的命令loaddata有问题

当我运行这个命令时,这个UnicodeDecodeError会出现,因为我的数据库表中有“é”

我在pgAdmin上尝试了多种类型的数据库,它们具有不同的编码类型,如“UTF-8”、“latin-1”或“win1252”,或不同的“字符类型”或“排序规则”设置,如“C”或“french_switzerland.1252”,但每次都会出现此错误

这里有更多关于我工作空间的信息

让我知道如果你需要更多的信息,我不会给你太多,我不想给无用的信息

我知道还有一些问题看起来和我的问题相似,但我不明白答案。有关于为什么会出现错误的解释,但没有关于如何解决它的解释

  • 我在Windows10上
  • 我正在使用Pycharm 2020.3.2
  • Pgadmin v4

完全错误:

(venv) C:\Users\Mathias\PycharmProjects\yufindProject>python manage.py loaddata ask/dumps/ask.json
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()

  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\management\__init__.py", line 395, in execut
    self.fetch_command(subcommand).run_from_argv(self.argv)

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\management\base.py", line 371, in execute
    output = self.handle(*args, **options)

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\management\commands\loaddata.py", line 72, in handle
    self.loaddata(fixture_labels)

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\management\commands\loaddata.py", line 114, in loaddata
    self.load_label(fixture_label)

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\management\commands\loaddata.py", line 172, in load_label
    for obj in objects:

  File "C:\Users\Mathias\PycharmProjects\yufindProject\venv\lib\site-packages\django\core\serializers\json.py", line 67, in Deserializer
    stream_or_string = stream_or_string.decode()

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 460: invalid continuation byte

Tags: djangoinpycorevenvlibpackagesline
1条回答
网友
1楼 · 发布于 2024-06-28 20:04:28

Django dumpdata fails on special characters中找到了解决方案

To save json data in django the TextIOWrapper is used:

The default encoding is now locale.getpreferredencoding(False) (...)

locale.getpreferredencoding函数的文档中,我们可以 read

Return the encoding used for text data, according to user preferences. User preferences are expressed differently on different systems, and might not be available programmatically on some systems, so this function only returns a guess.

Here我发现“hacky”是一种覆盖这些内容的工作方法 设置:

在django项目的文件settings.py中添加以下行:

import _locale
_locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])

相关问题 更多 >