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ď č. 1To 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")