擅长:python、mysql、java
<p>您可以编写自己的错误处理程序。下面是我在Python2.7、3.3和3.6上测试的解决方案:</p>
<pre><code>from __future__ import print_function
import codecs
import sys
print(sys.version)
def myreplace(ex):
# The error handler receives the UnicodeDecodeError, which contains arguments of the
# string and start/end indexes of the bad portion.
bstr,start,end = ex.object,ex.start,ex.end
# The return value is a tuple of Unicode string and the index to continue conversion.
# Note: iterating byte strings returns int on 3.x but str on 2.x
return u''.join('\\x{:02x}'.format(c if isinstance(c,int) else ord(c))
for c in bstr[start:end]),end
codecs.register_error('myreplace',myreplace)
print(b'\xc2\xa1\xa1ABC'.decode("utf-8", "myreplace"))
</code></pre>
<p>输出:</p>
^{bq}$