擅长:python、mysql、java
<p>在二进制中,0xE9看起来像<code>1110 1001</code>。如果您阅读了<a href="http://en.wikipedia.org/wiki/UTF-8#Design" rel="noreferrer">UTF-8 on Wikipedia</a>,您将看到这样一个字节后面必须跟两个<code>10xx xxxx</code>形式的字节。例如:</p>
<pre><code>>>> b'\xe9\x80\x80'.decode('utf-8')
u'\u9000'
</code></pre>
<p>但这只是机械原因的例外。在本例中,有一个字符串几乎肯定是用拉丁语1编码的。你可以看到UTF-8和拉丁语1的不同之处:</p>
<pre><code>>>> u'\xe9'.encode('utf-8')
b'\xc3\xa9'
>>> u'\xe9'.encode('latin-1')
b'\xe9'
</code></pre>
<p>(注意,这里我使用的是Python 2和3的混合表示。输入在任何版本的Python中都有效,但是Python解释器不太可能以这种方式同时显示unicode和字节字符串。)</p>