/ / utf-8 Chyba pri tlači znakov Python 2.7 - python, python-2.7, utf-8, non-ascii znaky

Chyba tlače znakov utf-8 Python 2.7 - python, python-2.7, utf-8, non-ascii znaky

Napíšem kódy, ktoré obsahujú znaky, ktoré nie sú ako ASCII;

print "Öüç"

Viem, že predvolené kódovanie jazyka Python je ASCII, takže to pridám do môjho kódu.

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

Keď spustím svoj kód, reťazec "Öüç" sa objaví takto;

├û├╝├ğ

Čo mám robiť?

odpovede:

1 pre odpoveď č. 1

To je len voľne spojené s Pythonom. i #-*- coding:utf-8 -*- je tu nepotrebné: je určený len na to, aby umožňoval používať kódy unicode litterals v Pythonovom zdroji.

Len mi umožnilo odhadnúť, že váš zdroj bol utf-8 zakódovaný, takže "Öüç" je v skutočnosti nasledujúci reťazec: "xc3x96xc3xbcxc3xa7", A čo vidíte, sú tie znaky na kódovej strane 437.

Predpokladám, že používate systém Windows a že chcp príkaz v okne CMD by potvrdil, že použitá kódová stránka je skutočne 437.

Čo je možné urobiť? Najskôr musíte na konzole vybrať kódovú stránku schopnú zobraziť 3 znaky, radím 850 kódovú stránku: chcp 850 pred spustením programu Python

Potom v Pythone dekódujete reťazec utf-8 do unicode a zakódujte ho v cp850:

print "Öüç".decode("utf8").encode("cp850")

Prípadne môžete použiť kódovú stránku Windows 1252, ktorá sa nachádza blízko latinky1: chcp 1252 pred spustením programu Python a potom:

print "Öüç".decode("utf8").encode("latin1")