Co właściwie robi funkcja python print ()?
Patrzyłem na topytanie i zacząłem się zastanawiać, co robiprint
właściwie to zrobić.
Nigdy nie dowiedziałem się, jak używaćstring.decode()
istring.encode()
aby uzyskać ciąg Unicode „out” w interaktywnej powłoce Pythona w tym samym formacie, w jakim drukuje. Bez względu na to, co robię, dostaję też
To jest python 2.x, ale już próbuję naprawić swoje sposoby i faktycznie zadzwonićprint()
:)
Przykład:
>>> import sys
>>> a = '\xAA\xBB\xCC'
>>> print(a)
ª»Ì
>>> a.encode(sys.stdout.encoding)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0xaa in position 0: ordinal not in range(128)
>>> a.decode(sys.stdout.encoding)
u'\xaa\xbb\xcc'
EDYTOWAĆ:
Dlaczego o to pytam? Jestem chory i zmęczonyencode()
błędy i zdałem sobie z tego sprawęprint
może to zrobić (przynajmniej w powłoce interaktywnej). Wiem, żeMUSI BYĆ DROGA w magiczny sposób kodowaćPRAWIDŁOWO, kopiąc informacje o tym, jakiego kodowania użyć gdzieś ...
DODATKOWE INFORMACJE: Używam Pythona 2.4.3 (# 1, 3 września 2009, 15:37:12) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] na linux2
>>> sys.stdin.encoding
'ISO-8859-1'
>>> sys.stdout.encoding
'ISO-8859-1'
Jednak wyniki są takie same w Pythonie 2.6.2 (r262: 71600, 8 września 2009, 13:06:43) w tym samym polu linux.