[Python]Konwersja unicode do stringa - raz działa, raz nie


(McDracullo) #1

Mam problem z jednym zagadnieniem, otóż wykonanie fragmentu kodu:

a = ['la\xc3\xb3i\xc4\x85sn\xc4\x85\xc4\x87\xc5\x82l', 'utf-8']



b = a[0].decode(a[1])

print type(b)

print str(b)

 na jednej maszynie przebiega bez problemu:

<type 'unicode'>

laóiąsnąćłl

Na drugiej natomiast występuje error:

<type 'unicode'>

Traceback (most recent call last):

File "./test.py", line 68, in <module>

print str(b)

UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 2: ordinal not in range(128)

Z czego może wynikać problem pojawiający się w innym środowisku? Wersja pythona jest ta sama.


(Jim1961) #2

Nie miałem przyjemności, ale spróbuj dopisać

# -*- coding: utf-8 -*-

na początku skryptu.


(McDracullo) #3

Jest (i było) w obu.

 

EDYCJA

W jednym ze środowisk pythona zostało zmienione domyślne kodowanie. Pomogło wykonanie:

 

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

 

:slight_smile: