vscode执行pyhon读取文件乱码
乱码相关的三个方面
- 读取文件的编码
- python使用的编码
- 调用的终端的编码
因此,要实现最终的显示正确,需要三者使用的编码相同
读取内容编码
test01使用utf-8进行编码的,因此在解码的时候,需要使用utf-8进行解码。同样的,test02使用的时GB2312编码的,需要使用GB2312解码。
Python的编码
python3读取文件默认使用与系统相似的编码来解码文件,因此,在windows上,可能会使用gbk来解码文件,如果文件是其他方式编码的,就会乱码
读取utf-8编码的文件用gbk无法读取
读取GB2312编码的文件就没有问题
open函数指定解码用的编码后,就好了
终端的编码
之前vscode调用的是windows的cmd,现在调用的是windows的powershell,如果终端的编码不对,最终也会显示乱码
使用如下脚本查看powershell的编码
[psobject].Assembly.GetTypes() | Where-Object { $_.Name -eq 'ClrFacade'} |
ForEach-Object {
$_.GetMethod('GetDefaultEncoding', [System.Reflection.BindingFlags]'nonpublic,static').Invoke($null, @())
}
可以看到目前powershell的编码是gb2312,因此显示utf-8编码的内容时,乱码
设置powershell的编码
在这个psl文件结尾追加chcp 65001
即可
重新打开vscode,并重新执行即可