python-2.7 - UnicodeDecodeError:“utf8”编解码器无法解码位置 3 中的字节 0xaf:python 2.7 中的无效起始字节
问题描述
using windows10 python 2.7
我的解密代码
def 解密(自我,编码): enc = b64decode(enc) iv = enc[:16] 密码 = AES.new(self.key, AES.MODE_CBC, iv) 打印密码,"======" dec = cipher.decrypt(enc[16:]) #print dec,"========",dec unp = unpad(dec) 打印 unp,"=========","=fdkjfsdklfsdjndjdjk" 解码 = unp.decode('utf8') #decode = unp.decode('utf8') 打印解码 # unpad(cipher.decrypt(enc[16:])).decode('utf8') 返回解码
在解密加密的响应 cipher.decrypt(enc[16:]) 行时,我得到了以下输出。但实际上应该是XML格式。
)^»3(Fm╠¡Oå┤╖¢iOÑ>s▌B¿▌╥≥┐Éj6╬░¢√(å¥ 2?J≤ôGOL═\¥°t╬╚ΓÜ▐╝Φ÷═AQw≥ [&nΣ±ƒ∩(╩ûGN~[3bgrHPÜ4%╖H⌡▄wÅ|■Çq≥½÷σHñxìdºwë±!│▐íWÇÿΘ╦σ╖è#X▓┤2ÿ ┘╟ƒΣ°Y░çNßæÅαb3f«─O(Wo9 ┐A╕t£╧{K [X┴┬ÜHΘ⌠X4┬Æ≡~╠h3ε┘σmÉfú.Fú╜₧c!_╒▐wα²A/╒|─sY%=⌐▒Yö╕[╞ε░:: tA┴₧µ≤²∙C─A█₧╕╧τ╙x≤rƒú░uú█å┬-╤`╡f╕^∞tΦ½q╗&╪─╘¥&┐Σ₧▌(╙┌JüñÇäQ¥/ *ó▐H!C┬+δà\Bah╘áÆXu╥C█│¼)ë╩╓*E(÷·├à√¿╨╧1Θ·0≈º²║Ås┬xOò}a╪╔╫HÜq┬gqÅÖ ⌐4~v╖·9╥Ü$wçZ▌╗┬? /Zj12^}&t$F=SBKhöåε è╝o╪█º8fìîé╫=«·gO:Z╢≡2╔K«Θ uè/╩ {⌐Åwwε ^α┼µk4┘Ñ╧:ƒ16║╞ⁿB°¢üdó?eB┼P┌L_90]\5W╥µA⌐ #Mq╤ìⁿ²ç≥Θ·▓F₧▀) ç@ë╒╖às2╡}πL╕╨60ä┌ù6▒.rn╔jⁿR¢∙µIëÉ╝µè}c≈σß_αäcª/╤"lK*└qX2H öφq#â½æΘjÄ % é6#üY█▓aFßα█÷I║n+⌡▄Ä!jTÄ√∩yr¥d"╛¬z√ⁿµº½êYⁿπ¬2[╕¿≡ÿ │Uv?{τæτ°QÜĵ╨íkUFπ╚BπÆ! Hiåƒ╒£αì≥Æεtr█[╤àÆ█oíΩ("┤╞åMÜò╝D3╬¿VτΩr▓ÜÆÿ$┌)⌠≡\~╩▀Rr≡y£₧≤║L>╙╘µv9ÿæ├@B≡µ £╕Ew╗yÿtXeY.αÑsú Y±£∩=yy¥óüΣÆF╧╦á─} Oƒ≥-9[≤¢fúΣe3&Öÿ░ìç·ntÄO l∙m¥\╞&KêëR»s╔E2╨ª│OV≥░m═╬2┬₧ú(ûöz¢¼╣\≤5nqò+╝±Äm{Gσ╝ROφNµàg╛RV╨;Lδa ,é/ⁿY╜ |┤ñ╔÷πvⁿ╞W▓π}Rå#h$*πAò¼2╝CÅk*l"h╕≥aÆhæt)9▐░╝.]B}-╢└∩Iσw┬╚D&5≡▒²`WJ╔╫ ⌡K1∩ fú~A▌c▄mÑ┴?ôQ╩ƒⁿ|╨{ç▒·ΘB╡Φτ▌⌠─╘q?nⁿC/v>σ°┬#'L┌ 0Kè£ ╩[Érekx«wë,\¥─K\a╡·┐PDIF╩l╤YH╞F$c6≈G¡Üc^r=pbiµΦ┘±ÿ▓zΦ¿0░ì┐á7┌o■«-ⁿ# ,
虽然在线解码 ieunp.decode('utf8')
给我以下错误
回溯(最近一次通话最后): 文件“nic_dycrypt_encrypt.py”,第 99 行,在 print('密文:',AESCipher(key).decrypt(密文)) 文件“nic_dycrypt_encrypt.py”,第 86 行,解密 decode = unp.decode('utf8').strip() 解码中的文件“C:\Python27\lib\encodings\utf_8.py”,第 16 行 返回 codecs.utf_8_decode(输入,错误,真) UnicodeDecodeError:“utf8”编解码器无法解码位置 3 中的字节 0xaf:无效的起始字节
Please any one help me to know what is that format and why the error is coming and how to resolve
解决方案
简单地说,并非所有字节和/或字节序列都映射到 unicode 字符。事实上,大多数字节序列没有 UTF-8 字符映射。
常见的解决方案是将二进制转换为可以处理所有字节值的编码,最常见的是Base64和十六进制。
推荐阅读
- swagger - CDK 部署后 CloudFormation 模板未更新
- javascript - 如何在不刷新 Django Javascript 中每个帖子的页面的情况下打开编辑部分?
- python - 如何使用发布请求 python 将照片上传到 Instagram
- c# - 无法更新实体框架条目
- java - REST:具有不同条件参数的资源的相同端点
- swiftui - SwiftUi - 为 MapKit 构建微调器
- python - 如何在 Swagger UI 中对 FastAPI 端点进行分组?
- java - 优先级队列作为最大优先级队列未按预期工作
- php - PHP strtotime 不包括元旦...如何包括假期?
- python - 是否可以在 python 中切片多维列表(不是 numpy)?