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

latin-1 からデコードしようとしてsいますが、端末が 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 に答える