SyntaxError: Non-UTF-8 code starting with ‘\xff‘ in file but no encoding declared 解决办法与分析

文章讲述了作者遇到反编译后的py文件因编码问题报错,通过添加正确的编码声明、识别原始文件非UTF-8编码导致的乱码,以及使用WinHex分析发现的解决过程。

简单记录一下执行一个经过反编译后得到的py文件时报错的解决办法与分析

报错内容如下:

SyntaxError: Non-UTF-8 code starting with '\xff' in file D:\test\flag.py on line 1, but no encoding declared; see https://peps.python.org/pep-0263/ for details

这个flag.py是我使用flag.pyc经过反编译得到的文件,但是在运行时却报错。

看网上的解决办法是:

在代码首行添加:# coding=utf-8

或者在代码首行添加:# coding=gbk

或者在代码首行添加:# coding=gb2312

(注意等号两边不要加空格)

有些确实是适用于这种方法的,但是我这里不行

最终解决办法是将代码复制下来,重新建一个py文件,将代码内容粘贴进去,即可正常执行。

之后单独分析了一下两个文件的区别:

flag.py

这原本是一个文本文件,但是文件类型反而与音频文件匹配度很高

并且其可见字符串为空

对比重新创建的flag1.py(内容与flag.py一致)

可以打印出可见字符串,也就是我们代码的内容

使用winhex进行分析:

可以很明显看出二者是完全不一样的

原flag.py文件的UTF-8编码存在很严重的乱码

因此将其代码内容复制下来重新创建一个新的py文件即可解决上述报错的问题

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

My6n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值