擅长:python、mysql、java
<p>问题是字符串实际上不是用特定编码编码的。示例字符串:</p>
<pre><code>a = u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439 \xd0\xb5\xd0\xba'
</code></pre>
<p>将python的unicode字符串的内部表示与<code>utf-8</code>编码文本混合。如果我们只考虑“特殊”字符:</p>
<pre><code>>>> orig = u'\u0435\u043a'
>>> bytes = u'\xd0\xb5\xd0\xba'
>>> print orig
ек
>>> print bytes
ек
</code></pre>
<p>但是你说,<code>bytes</code>是<code>utf-8</code>编码的:</p>
<pre><code>>>> print bytes.encode('utf-8')
ек
>>> print bytes.encode('utf-8').decode('utf-8')
ек
</code></pre>
<p>错了!但是呢:</p>
<pre><code>>>> bytes = '\xd0\xb5\xd0\xba'
>>> print bytes
ек
>>> print bytes.decode('utf-8')
ек
</code></pre>
<p>欢呼。</p>
<p>所以。<strong>这对我意味着什么?</strong>这意味着你(可能)解决了错误的问题。你应该问我们/试图弄清楚为什么你的字符串以这种形式开始,以及如何避免它/在你把它们都弄混之前修复它。</p>