vscode执行pyhon读取文件乱码

乱码相关的三个方面

  1. 读取文件的编码
  2. python使用的编码
  3. 调用的终端的编码

因此,要实现最终的显示正确,需要三者使用的编码相同

读取内容编码

image-20220220202800588

image-20220220202852831

test01使用utf-8进行编码的,因此在解码的时候,需要使用utf-8进行解码。同样的,test02使用的时GB2312编码的,需要使用GB2312解码。

Python的编码

python3读取文件默认使用与系统相似的编码来解码文件,因此,在windows上,可能会使用gbk来解码文件,如果文件是其他方式编码的,就会乱码

image-20220220203921851

读取utf-8编码的文件用gbk无法读取

image-20220220204100709

读取GB2312编码的文件就没有问题

image-20220220204224877

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, @())
  }

image-20220220205508358

可以看到目前powershell的编码是gb2312,因此显示utf-8编码的内容时,乱码

image-20220220210331677

设置powershell的编码

image-20220220210523729

在这个psl文件结尾追加chcp 65001即可

image-20220220210634378

重新打开vscode,并重新执行即可

image-20220220210813920

posted @ 2022-02-20 21:11  monkey6  阅读(132)  评论(0编辑  收藏  举报