擅长:python、mysql、java
<p>我不明白为什么(或如何)混合使用字节字符串和Unicode字符串。但是如果你的数据是这样的,那么你需要以不同的方式处理这两种类型的字符串。在</p>
<p>下面的代码首先打印<code>data</code>中每个字符串的表示形式,以及该字符串所属对象的类型。<br/>
然后它对纯字节字符串调用<code>decode('unicode-escape')</code>方法,该方法将它们转换为Unicode字符串。<br/>
然后将所有字符串从Unicode编码为UTF-8字节字符串。在</p>
<pre><code>data = [
'byte string',
u'unicode string',
'this byte string has unicode escapes: \\u2122\\u00e6',
u'this unicode string has non-ascii chars: ©æ™ä',
]
for s in data:
print repr(s), type(s)
if isinstance(s, str):
s = s.decode('unicode-escape')
z = s.encode('utf8')
print repr(z), z
print
</code></pre>
<p><strong>输出</strong></p>
^{pr2}$
<p>上面的输出是在配置为使用UTF-8的终端中产生的。在</p>