【问题标题】:VSCode - Output window says "UnicodeEncodeError" when I try to print unicodeVSCode - 当我尝试打印 unicode 时,输出窗口显示“UnicodeEncodeError”
【发布时间】:2016-02-23 08:00:36
【问题描述】:

我刚开始在一些 python 脚本上使用 VSCode。当我尝试打印如下内容时:

print('%s' % string.decode('utf-8'))

我在输出窗口中收到以下错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 16-20: ordinal not in range(128)

我知道它可能是因为输出流只是ascii,但我找不到可以更改它的地方...,要么我错过了它,要么就是它原来的样子?

我在 Win7 64bit 上使用 v0.10.8。

提前致谢!

【问题讨论】:

  • 试试.decode('utf-16')
  • 相同的代码在 IEP(另一个 python IDE)中工作。所以这不是代码问题。
  • 嗯,如果你捕捉到 UnicodeEncodeError 并打印 repr(string),它会在 VSCode 和其他 IDE 中打印什么?
  • 输出是 '\xe6\xad\xa6\xe6\xb1\x89\xe6\xac\xa3\xe6\x99\xaf\xe9\x80\x9a',它是 utf-8 编码的。
  • 您好,这是 VS Code 的 Python 扩展中的一个错误,已针对此问题提出了一个错误。希望有人能够帮助解决这个问题。潜在问题的详细信息已在此处提出stackoverflow.com/questions/37657455/…

标签: python visual-studio-code


【解决方案1】:

我遇到了同样的问题,这是由插件--Code Runner引起的。

请查看此处的讨论:

建议将这些写入VSCode设置文件:

{
    "code-runner.executorMap": {
        "python": "set PYTHONIOENCODING=utf8 && python"
    }
}

如果它不起作用,您可以使用它(在终端中运行脚本):

{
    "code-runner.runInTerminal": true
}

【讨论】:

    【解决方案2】:

    你的语法是正确的

    arabic_bytes=b'\xd9\x83\xd9\x84\xd8\xa7 \xd8\xa8\xd8\xaf\xd8\xa7\xd9\x8a\xd8\xa9 \xd9\x88\xd8\xa8\xd8\xaf\xd8\xa7\xd9\x8a\xd8\xa9'
    
    print('%s' % arabic_bytes.decode('utf-8'))
    

    你应该看到كلا بداية وبداية

    您的字节字符串可能已损坏,在这种情况下您的解码更改为

     arabic_bytes.decode('utf-8', errors='ignore')
    

    【讨论】:

    • 同样的错误。我忘了提到我(仍在)使用 Python2。
    • 我分享的命令——也适用于 Python2.7...你能分享一下你的“字符串”是什么样的吗?做一个类型(字符串)来确认它的数据类型。
    • 你是否在 VSCode 中运行它并在输出窗口中查看结果?
    • 抱歉,我只运行 Unix/Linux - 没有使用该 IDE 的经验。导入 print pprint.pprint(string) 怎么样
    • 我在其他IDE中运行成功。我应该明确指出这个问题是关于 VSCode 的。谢谢。
    猜你喜欢
    • 2022-08-17
    • 2021-04-26
    • 2021-10-19
    • 2021-06-28
    • 2020-04-08
    • 1970-01-01
    • 2015-11-28
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多