首页 > 解决方案 > 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

标签: python-2.7

解决方案


简单地说,并非所有字节和/或字节序列都映射到 unicode 字符。事实上,大多数字节序列没有 UTF-8 字符映射。

常见的解决方案是将二进制转换为可以处理所有字节值的编码,最常见的是Base64和十六进制。


推荐阅读