擅长:python、mysql、java
<p>在Python3中,可以使用<code>decode</code>方法将<code>bytes</code>对象解码为字符串。它可以接受两个参数:
-<code>encoding</code>,默认为<code>"utf-8"</code>,并且
-<code>errors</code>,它定义对非法字符序列的操作。默认值是<code>"strict"</code>,它引发了一个<code>UnicodeDecodeError</code>;其他可选值是<code>ignore</code>和{<cd9>},后者用Unicode替换字符<code>"\uFFFD"</code>替换非法字符。在</p>
<p>因此,您需要执行以下操作来解码和替换:</p>
<pre class="lang-py prettyprint-override"><code>encoding = guess_encoding()
text = text_bytes.decode(encoding, errors='replace').replace('\uFFFD', '?')
</code></pre>
<p>正如<a href="https://stackoverflow.com/questions/5224089/safe-decoding-in-python-symbol-instead-of-exception#comment89472328_5224130">Sven Marnach</a>在注释中指出的那样,您可以将<code>errors</code>参数直接提供给<code>open</code>;否则您将在读取文件时得到解码错误(如果它不在字符映射中)。在</p>