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

3
以下是您要翻译的内容:

图片展示问题以下是代码,用于说明问题:

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

如果我在VSCode debug中运行上述代码,它会打印出"涓"而不是"严",这是UTF-8编码中u"严"的前两个字节(\xe4\xb8)在gbk编码中解码的结果。\xe4\xb8在gbk中表示"涓"。
然而,如果我在pycharm中运行相同的代码,它会像我预期的那样打印出"严"。如果我在powershell中运行代码也一样。
很奇怪,VSCode Python调试器的行为与Python解释器不同。如何使打印结果正确?我认为在每个文本结尾添加decode("gbk")并不是一个好主意。
我的环境数据:
- VS Code版本:1.21 - VSCode Python扩展版本:2018.2.1 - 操作系统及版本:Windows 10 - Python版本:2.7.14 - 使用的虚拟环境类型:无
2个回答

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

  2. 修改vscode中的task.json文件,我不确定它是否仍适用于2.0版本。 您可以在此处找到:更改任务输出的编码 或者在github上找到这里: 任务应支持指定输出编码

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


在Windows 10上设置系统变量对我很有帮助,谢谢。 - Vega

-1
如果您在VS2017中打开Python文件,可以执行以下操作:
前往:
1. 文件-> 2. 另存选定项为-> 3. 单击“保存”按钮旁边的向下箭头 4. 单击“使用编码保存...” 5. 选择所需的编码类型... 6. 如果.py已经保存,则覆盖文件>选择“是”
例如选择: "简体中文(GB18030)-代码页54936"
此外,在.py文件的第二行添加以下内容:
# -*- coding: gb18030 -*- 或 # -*- coding: gb2312 -*-
这些编码接受您的严字符。
最后附上一个编码器/解码器测试器的好链接here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接