VScode的Python调试控制台无法正确打印Unicode中文字符

时间:2018-03-16 09:46:38

标签: python visual-studio-code

Image to show the problem以下是解释问题的代码:

# -*- coding:utf-8 -*-
text = u"严"
print text

如果我在VSCode调试中运行上面的代码,它将打印“涓”而不是“严”,这是UTF-8中u“严”的前2个字节(\ xe4 \ xb8)的结果( \ xe4 \ xb8 \ xa5),用gbk编解码器解码。 gbk中的\ xe4 \ xb8是“涓”。

但是,如果我在pycharm中运行相同的代码,它会完全按照我的预期打印“严”。它是相同的如果我在powershell中运行代码。

连接VSCode python调试器与python解释器的行为不同。如何才能使打印结果正确,我不认为在每个文本的末尾添加解码(“gbk”)都是个好主意。

我的环境数据

  • VS Code版本:1.21
  • VSCode Python扩展版本:2018.2.1
  • 操作系统和版本:Windows 10
  • Python版本:2.7.14
  • 使用的虚拟环境类型:否

2 个答案:

答案 0 :(得分:1)

  1. 对于Windows用户,在系统变量中添加PYTHONIOENCODING变量,将其值更改为UTF-8,然后重新启动vscode,这在我的PC上有效。

  2. 在vscode中修改task.json文件,我不确定它是否仍适用于2.0版。 您可以在这里找到它:Changing the encoding for a task output 或在github中: Tasks should support specifying the output encoding

  3. 在启动py脚本之前添加以下内容: import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')

答案 1 :(得分:-1)

如果在VS2017中打开python文件,则可以执行以下操作:

转到:

  1. 文件>
  2. 将所选项目另存为 - >
  3.   

    点击“保存按钮”旁边的向下箭头

  4.   

    点击“使用编码保存...

  5. 选择您需要的编码类型......
  6. 如果.py已保存,则覆盖文件>选择“是”
  7.   

    选择例如:"Chinese Simplified (GB18030) - Codepage 54936"

    另外,在.py文件的第2行添加以下内容:

    # -*- coding: gb18030 -*-# -*- coding: gb2312 -*-

    这些编码接受你的性格。

    与endocoder /解码器测试人员here的良好链接。