首先感谢大佬的博客https://blog.csdn.net/joyfixing/article/details/79971667###,将编码方式讲解得很生动。
我想用python做翻译任务,但是遇到了中文乱码问题:
s = '你好'
print(sys.getdefaultencoding())
print(s)
运行结果为:
utf-8
浣犲ソ
原来是文件默认存储为utf-8格式,但是打印出结果为gbk格式,所以6个字节转换成3个乱码字符(2字节)
但是在cmd中运行相同的代码,可以正确显示中文:
看了他的博客https://blog.csdn.net/martinkeith/article/details/91970755 我才发现是vscode终端的编码方式和文件存储方式不一致
于是按照他的步骤修改了setting.json:
{
"terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"]
}
但是没卵用。。。查看评论发现,直接在终端执行命令:
chcp 65001
可以正常显示:
utf-8
你好
原来该配置只对powershell起作用,在我执行python的终端是python debug console,需要手动执行该命令。
在python debug console中输入命令以查看编码方式:
chcp
结果返回为936,为GBK编码,原来如此,“你好“的utf-8格式为6个字节,将解码成3个字符(GBK编码为2字节/字符)
那只好每次启动都敲一次喽:
chcp 65001