首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django dumpdata在特殊字符上失败

Django dumpdata在特殊字符上失败
EN

Stack Overflow用户
提问于 2020-10-21 06:22:07
回答 5查看 5.7K关注 0票数 18

我正试着把我的整个数据库转储给一个json。当我运行python manage.py dumpdata > data.json时,会得到一个错误:

代码语言:javascript
复制
(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功能都可以正常工作。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-04-30 15:28:25

一种解决方案是使用./manage.py dumpdata -o data.json而不是./manage.py dumpdata > data.json

另一个解决方案是使用Python的UTF-8模式,运行:

代码语言:javascript
复制
python -Xutf8 ./manage.py dumpdata > data.json
票数 56
EN

Stack Overflow用户

发布于 2020-12-07 18:00:54

为了在django中保存json数据,使用了TextIOWrapper

默认编码现在是locale.getpreferredencoding(False) (.)

locale.getpreferredencoding函数文档中,我们可以使用朗读

根据用户首选项返回用于文本数据的编码。用户首选项在不同的系统上表达不同,在某些系统上可能无法以编程方式使用,因此该函数只返回猜测。

这里我发现了"hacky“但是覆盖这些设置的工作方法:

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

代码语言:javascript
复制
import _locale
_locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])
票数 9
EN

Stack Overflow用户

发布于 2021-02-26 14:54:25

以下是djangoproject.com的解决方案

您可以转到Settings有一个"Use Unicode UTF-8 for worldwide support"," language“中的方框--”管理语言设置“--”更改系统区域设置“--”区域设置“。如果我们应用它并重新启动,那么我们将从Python获得一个合理的、现代的、默认的编码。djangoproject.com

设置框如下所示。启用检查并重新启动系统

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64457733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档