2

如何连接字符串和 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
4

3 回答 3

2

您正在尝试s从 latin-1 解码,但您的终端未使用 latin-1 编码;检查sys.stdin.encoding以了解它是什么。

例如,我cp850默认有:

>>> import sys
>>> sys.stdin.encoding
'cp850'
>>> s = 'jklö'
>>> u = u'äpoi'
>>> s
'jkl\x94'
>>> u
u'\xe4poi'
>>> print unicode(s, 'cp850') + u
jklöäpoi
>>> print (unicode(s, 'cp850') + u).encode('cp850')
jklöäpoi
于 2012-12-17T13:29:59.453 回答
1

请阅读此内容并将其放在枕头下。这是非常有价值的文档

http://farmdev.com/talks/unicode/

http://docs.python.org/2/howto/unicode.html

于 2012-12-17T12:51:32.007 回答
0

这似乎有效:

>>> l = s + u.encode('cp1252')
>>> print l
jklöäpoi
>>> type(l)
<type 'str'>
于 2012-12-17T13:02:36.277 回答