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,并重新执行即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现