win下python脚本以unix风格换行保存将会报错为编码问题 SyntaxError: encoding problem:gbk

本文讲述了作者在Windows环境下遇到一个Python脚本因换行风格(Unix风格)导致的编码问题,误以为是UTF-8与GBK编码问题。通过Notepad++查看字符发现是换行风格不同,将Unix风格换行改为Windows风格后问题解决。此外,还探讨了Git的`core.autocrlf`配置以及不同平台的换行风格转换问题,强调了解决问题时注意信息的时效性和实践的重要性。

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

utf-8与gbk编码都报错

从别人的github拉下来一个python脚本。
直接运行,python报错如下:

File ".\drag_files_do_event.py", line 1
SyntaxError: encoding problem: utf8

打开发现该文件第一行已经使用了注释说明文件编码是utf-8,怀疑是否实际是gbk编码。所以将注释中的编码替换成gbk。并且不放心,还将编码转换成gbk保存。
之后再次运行,依旧报错。

File "drag_files_do_event.py", line 1
SyntaxError: encoding problem: gbk

怀疑是不是我的编辑器有问题,又去尝试用notepad++及VScode分别用utf-8,gbk编码保存。折腾的怀疑人生怀疑世界,百度无果。谷歌我打不开。


问题关键是换行风格的问题

吃完午饭,想着看一下每个字符是啥,于是突然想起了notepad++的查看所有字符功能,发现换行只有LF,是unix风格的换行,而我自己写的能跑起来的脚本,无论是utf-8编码的还是gbk编码的都是CR LF的win风格换行。
于是我将换行风格转为win风格。问题成功解决,脚本能够跑起来。

更进一步的解决类似的问题

上面已经清楚了问题的产生是不同平台下默认的不同风格的EOL产生的问题。
于是我开始思考如何更加优雅的解决这个问题。通过搜索,我找到了git的core.autocrlf这个设置。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值