擅长:python、mysql、java
<p>为了澄清一些问题:</p>
<pre><code>Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win32
>>> u'%s' % "cPickle.UnpicklingError: invalid load key, 'ÿ'."
Traceback (most recent call last):
File "<input>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 44: ordinal not in range(128)
</code></pre>
<p>这是因为Python2尝试对字符串进行解码以将其插入unicode字符串(默认编码为ASCII),当然ASCII无法解码<code>'ÿ'</code>(decode意味着将字节转换为码位),因此出现了异常。下面的工作原理是它不尝试解码任何东西-只显示字节-以ascii格式:</p>
^{pr2}$
<p>下面也可以工作,并且(控制台以ascii格式显示)显示unicode字节值(即<em>将unicode字符串(其中的字节)编码为ascii字符):</p>
<pre><code>>>> u'%s' % u"cPickle.UnpicklingError: invalid load key, 'ÿ'."
u"cPickle.UnpicklingError: invalid load key, '\xff'."
</code></pre>
<p>与中的逻辑相同:</p>
<pre><code>>>> u'á, é, í, ó, ú, ü, ñ'
u'\xe1, \xe9, \xed, \xf3, \xfa, \xfc, \xf1'
>>> 'á, é, í, ó, ú, ü, ñ'
'\xc3\xa1, \xc3\xa9, \xc3\xad, \xc3\xb3, \xc3\xba, \xc3\xbc, \xc3\xb1'
</code></pre>
<p>正是这种内部的编码/解码让我困惑,也让我有点困惑。在</p>