擅长:python、mysql、java
<p>你的bug早就存在了。唯一可接受的解决方案是更改抓取代码,使其返回字节对象而不是文本对象。不要试图将字符串<code>un</code>转换为字节,这样做是不可靠的。在</p>
<p>执行以下操作:</p>
<pre><code>>>> un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'
>>> bz2.decompress(un.encode('raw_unicode_escape'))
b'huge'
</code></pre>
<p>“raw_unicode_escape”只是一种拉丁语-1编码,它为外部的字符提供了一个内置的回退机制。此编码对其他代码点使用\uxxx和\UXXXXXXXX。现有的反斜杠不会以任何方式转义。它在Python pickle协议中使用。<strong>对于不能用\xXX序列表示的Unicode字符,数据将损坏。</strong></p>
<p>web抓取代码没有业务返回bz2编码的字节作为<code>str</code>,因此您需要解决问题的<strong>原因</strong>,而不是试图处理症状。在</p>