擅长:python、mysql、java
<p>这个<code>'D\xc3\xa2\xe2\x82\xac\xe2\x84\xa2Iberville'</code>是一个普通的字符串,它碰巧有表示字符的转义位。在</p>
<p>你需要先把它解码。由于您还没有给出解码,Python正在尝试ASCII并失败。在</p>
<pre><code>>>> s
'D\xc3\xa2\xe2\x82\xac\xe2\x84\xa2Iberville'
>>> type(s)
<type 'str'>
>>> type(s.decode('utf-8'))
<type 'unicode'>
>>> print(s.decode('utf-8'))
D’Iberville
</code></pre>
<p>以下是如何理解这个过程:</p>
<ol>
<li><p>首先,要明白字符是人类的,字节是计算机的。计算机只是帮我们把字节转换成字符,这样我们就可以理解数据了。</p></li>
<li><p>所以,任何时候你需要为计算机存储一些东西,你需要把它从字符转换成字节,因为这是计算机知道的。所有文件(甚至文本文件)都是字节。只要你打开它,就可以把这个字节数据转换成字符,这样我们就可以理解它的内容了。对于“二进制”文件(如图像或Word文档),这个过程有点不同。</p></li>
<li><p>如果我们正在写“文本”内容,我们需要获取glyphs(字符)并将它们转换成字节,以便可以写入文件。这个过程叫做解码。</p></li>
<li><p>当我们想“读”一个文本文件,也就是把字节转换成字形(字符或字母表)时,我们需要对这些位进行编码——实际上,翻译它们。为了知道哪个glyph对应于存储的位,我们使用一个查找表这个表名(utf-8)就是您传入的。</p></li>
</ol>