【问题标题】:Issue with latin accents on Powershell output redirected to file重定向到文件的 Powershell 输出上的拉丁重音问题
【发布时间】:2021-07-20 04:57:45
【问题描述】:

我正在为 python 使用 Powershell 和 django web 框架。这个 Web 框架有一个实用程序,用于从您的数据库python manage.py dumpdata 转储数据。当您调用此命令时,您将通过 stdout 获得所有序列化为 json 的数据库条目(此输出没有问题,一切正常):

[
    {
        "model": "user.user",
        "pk": "007a0078-f538-4c01-9a77-694cdd6b142f",
        "fields": {
            "name": "César"
        }
    },
...
]

因此您可以轻松地使用重定向运算符> 并将输出放入文件python manage.py dumpdata > myfile.json。 我的问题是在这样做之后(将输出重定向到文件),如果我有带有拉丁口音的字母,它们会被替换为奇怪的字符:

{
        "model": "user.user",
        "pk": "fa35df0c-5ce4-4ff0-a4c6-ee25e32930e7",
        "fields": {
            "name": "C¾sar"
        }
},

我还尝试将 powershell 和 python sys stdin 和 out 编码设置为 utf-8

-python manage.py dumpdata | out-file myfile.json -encoding utf8

-import sys; sys.stdout.reconfigure(encoding='utf-8')

但仍然面临同样的问题。

【问题讨论】:

  • 您好,我已经用更具描述性的信息更新了我的问题。另外我已经尝试过这种解决方案,甚至 powershell 都说它的编码是 UTF-8。
  • 可悲的是我根本不懂python。

标签: python django windows powershell


【解决方案1】:

似乎这个问题与 Powershell 而不是 Python 有关,因为它的输出编码良好。

我为这种特定情况找到了partial solution,使用python标准库来创建所需的json文件,而不是重定向运算符>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2012-12-13
    • 1970-01-01
    • 2022-01-24
    • 2015-06-22
    • 2011-07-10
    相关资源
    最近更新 更多