[python] Unicode/ne-unicode problem

Zdeněk Böhm zdenek.bohm na seznam.cz
Středa Květen 2 15:01:34 CEST 2012


Tento problém vzniká, když je text převeden do lokálního kódování dvakrát.

# výchozí text:
>>> "ě š č ř"
'\xc4\x9b \xc5\xa1 \xc4\x8d \xc5\x99'

# Tady se text chybně považuje za unicode:
text = u'\xc4\x9b \xc5\xa1 \xc4\x8d \xc5\x99'.encode("utf8")

# a takovou to pak udělá "paseku":
>>> text
'\xc3\x84\xc2\x9b \xc3\x85\xc2\xa1 \xc3\x84\xc2\x8d \xc3\x85\xc2\x99'
>>> print text
ě š č ř

# Takto se to opraví zpět do správného tvaru:
>>> fixed = text.encode('raw_unicode_escape').decode('utf-8')
>>> print fixed
ě š č ř


Další informace o konferenci Python