擅长:python、mysql、java
<p>更完整的回答。</p>
<p>在python2中,字符串有两种类型:str和unicode。</p>
<p>使用str时,使用的是字节,因此可以直接将它们写入stdout之类的文件。</p>
<p>使用unicode时,在写入文件之前,必须将其序列化或编码为字节。</p>
<p>那么,这里发生了什么?<code>print "nome do seu chápa".encode('iso-8859-1')</code></p>
<p>你有字节,但是你试图编码它们,所以Python2首先在背后解码,然后使用请求的标准进行编码。如果幸运的话,这可能会奏效,或者产生胡言乱语。</p>
<p>现在,在执行以下操作时:<code>print u"Nâo".encode('utf-8')</code></p>
<p>您告诉python2从Unicode开始,这样它就可以对其进行编码而不会出现问题的解码。</p>
<p>Python3解决了这个问题。</p>