2012-08-06 10 views
8

Używam Ubuntu 12.04 LTS. Kiedy próbuję czegoś takiego w terminalu:Kod Unicode w formacie Python nie wyświetla prawidłowych symboli.

[email protected]:/usr/share/fonts/truetype/ttf-dejavu$ echo вдлжофыдвж 
вдлжофыдвж 

Symbole są wyświetlane poprawnie. Ale jeśli próby drukowania symboli Unicode przy użyciu Pythona 2.7 otrzymuję to:

>>> print u'абв' 
ц│ц┌ц≈ 

Jak pokazuje Pythona Mam kodowanie UTF-8 domyślnie dla terminalu:

>>> sys.stdout.encoding 
'UTF-8' 
+0

Co otrzymasz za 'repr (u'абв>)'? –

+0

Czy dzieje się to w python 3.2? A co z 'unicode ('абв')'? –

+0

>>> repr ('абв') "'\\ xc1 \\ xc2 \\ xd7'" – sunprophit

Odpowiedz

5

Twój wkład jest niewłaściwie odczytał przez terminal. To nie jest problem w Pythonie.

Aby to udowodnić, użyj reprezentacji unicode:

myunicode = u'\u0430\u0431\u0432' 
print myunicode 
print myunicode.encode('utf-8') 

Jeśli nie drukuje oryginalny łańcuch абв dwa razy, potem musisz skonfigurować swój program emulatora terminalu poprawnie.

+1

Świetnie, zmieniłem otrzymany zestaw znaków danych na UTF-8 w konfiguracji putty. Teraz działa. – sunprophit

Powiązane problemy