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”)都是个好主意。
答案 0 :(得分:1)
对于Windows用户,在系统变量中添加PYTHONIOENCODING
变量,将其值更改为UTF-8
,然后重新启动vscode,这在我的PC上有效。
在vscode中修改task.json
文件,我不确定它是否仍适用于2.0版。
您可以在这里找到它:Changing the encoding for a task output
或在github中:
Tasks should support specifying the output encoding
在启动py脚本之前添加以下内容:
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
答案 1 :(得分:-1)
如果在VS2017中打开python文件,则可以执行以下操作:
转到:
点击“保存按钮”旁边的向下箭头
点击“使用编码保存...
选择例如:
"Chinese Simplified (GB18030) - Codepage 54936"
另外,在.py文件的第2行添加以下内容:
# -*- coding: gb18030 -*-
或# -*- coding: gb2312 -*-
这些编码接受你的性格。
与endocoder /解码器测试人员here的良好链接。