【发布时间】:2012-12-04 13:34:48
【问题描述】:
如何连接一个字符串和一个 Unicode 并得到一个字符串作为结果?我尝试了以下。但这显然是不正确的。
>>> s = 'jklö'
>>> u = u'äpoi'
>>> print s+u
回溯(最近一次调用最后一次):文件“”,第 1 行,在 UnicodeDecodeError:'ascii' 编解码器无法解码位置 3 的字节 0x94:序数不在范围内(128)
>>> unicode(s, 'latin-1')+u
u'jkl\x94\xe4poi'
>>> (unicode(s, 'latin1')+u).encode('latin1')
'jkl\x94\xe4poi'
>>> print (unicode(s, 'latin1')+u).encode('latin1')
jklöõpoi
【问题讨论】:
-
为什么明显不正确? Python 尝试使用默认 (ASCII) 解码您的字节串,但失败了。然后你显式解码
s(使用unicode()),所以它可以附加结果。这是连接 unicode 数据的正确方法;通过使用 only unicode 对象。 -
先把字符串转成unicode?span>
-
@MartijnPieters:这是不正确的,因为最终输出中的 ä 变成了 õ