解决VSCode的autopep8插件无法自动格式化含中文的utf-8编码文件的错误

文章讲述了在配置了autopep8插件后,VSCode遇到无法格式化含中文代码的问题,原因是插件在处理编码时使用了GBK而非UTF-8。通过修改autopep8.py文件中的输入输出编码设置,将编码统一为UTF-8,解决了格式化错误的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题及原因

配置autopep8插件并安装相关依赖后,VSCode无法自动格式化含有中文的代码文件。

终端输出的报错信息如下:

从上图可以看到文件的编码确实是UTF-8,因此排除文件编码错误的可能性。根据报错信息中提示的gbk,推测是读取或写入流时编码错误。

定位到错误信息出现的文件位置:

 

这里直接将第4516行改为

wrap_output(sys.stdout, encoding='utf8').write(fixed_stdin)

是无效的,在查阅资料后得知这段代码在从标准输入流中读取数据时采用的编码是默认的系统编码,也即gbk,强制在写入时转换为UTF-8依然会报错

 二、解决方法

参考 ComingToy - fix gbk encode error 的提交记录将相应的修改应用到插件目录的autopep8.py文件中即可。

~\.vscode\extensions\ms-python.autopep8-2023.4.0\bundled\libs\autopep8.py

如果不再报错但无法格式化,可以将 input_encoding 和 output_encoding 统一设置为 encoding 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值