我正试着把我的整个数据库转储给一个json。当我运行python manage.py dumpdata > data.json时,会得到一个错误:
(env) PS C:\dev\watch_something> python manage.py dumpdata > data.json
CommandError: Unable to serialize database: 'charmap' codec can't encode character '\u0130' in position 1: character maps to <undefined>
Exception ignored in: <generator object cursor_iter at 0x0460C140>
Traceback (most recent call last):
File "C:\dev\watch_something\env\lib\site-packages\django\db\models\sql\compiler.py", line 1602, in cursor_iter
cursor.close()
sqlite3.ProgrammingError: Cannot operate on a closed database.这是因为我数据库中的一个字符是一个特殊字符。如何正确转储数据库?
FYI,所有其他DB功能都可以正常工作。
发布于 2021-04-30 15:28:25
一种解决方案是使用./manage.py dumpdata -o data.json而不是./manage.py dumpdata > data.json。
另一个解决方案是使用Python的UTF-8模式,运行:
python -Xutf8 ./manage.py dumpdata > data.json发布于 2020-12-07 18:00:54
为了在django中保存json数据,使用了TextIOWrapper:
默认编码现在是
locale.getpreferredencoding(False)(.)
在locale.getpreferredencoding函数文档中,我们可以使用朗读
根据用户首选项返回用于文本数据的编码。用户首选项在不同的系统上表达不同,在某些系统上可能无法以编程方式使用,因此该函数只返回猜测。
这里我发现了"hacky“但是覆盖这些设置的工作方法:
在django项目的settings.py文件中添加以下行:
import _locale
_locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])发布于 2021-02-26 14:54:25
以下是djangoproject.com的解决方案
您可以转到Settings有一个"Use Unicode UTF-8 for worldwide support"," language“中的方框--”管理语言设置“--”更改系统区域设置“--”区域设置“。如果我们应用它并重新启动,那么我们将从Python获得一个合理的、现代的、默认的编码。djangoproject.com
设置框如下所示。启用检查并重新启动系统

https://stackoverflow.com/questions/64457733
复制相似问题