03 Používání non Latin-1 znaků
Pokud budeme v programech používat pouze znaky bez diakritiky, tak se nemusíme o nic starat. Někdy se ale znakům s diakritikou nevyhneme.
Mezi nejběžnější typ proměnné patří řetězec znaků. Pokud tento řetězec bude obsahovat diakritiku, tak to musíme náležitě ošetřit.
V ošetření problému znaků mimo Latin-1 je jedna komplikace. Jinak se ošetřují řetězce v hlavním programu a jinak ve volaném programu.
Hlavní program
Hlavní programy jsou ty programy, které se spouští v první úrovni z okna Vstup skriptu, z konfigurace Startování nebo z Logix.
Každý řetězec znaků, který obsahuje znaky s diakritikou, překódujeme metodou decode(“UTF-8”).
# HlavniProgram.py
import jmri
print "spuštěno HlavniProgram.py".decode("UTF-8")
Pokud bychom nepoužili překódování, potom by se nám v okně Výstup skriptu zobrazil zkomolený text.
>>> # HlavniProgram.py
... import jmri
... print "spuštěno HlavniProgram.py"
spuÅ¡tÄno HlavniProgram.py
Při správném překódování bude text čitelný.
>>> # HlavniProgram.py
... import jmri
... print "spuštěno HlavniProgram.py".decode("UTF-8")
spuštěno HlavniProgram.py
Volaný program
U volaných programů je situace mírně komplikovanější. Kromě toho, že musíme překódovat všechny řatězce s non Latin-1 znaky, musíme navíc deklarovat, že soubor programu je uložen s kódováním UTF-8. Deklarace kódování se provádí komentářem coding=UTF-8. Komentář musí být prvním nebo druhým řádkem zdrojového kódu programu. Deklarace připouští varianty https://www.python.org/dev/peps/pep-0263/. Příklad volaného programu:
# coding=UTF-8
# VolanyProgram.py
import jmri
print "spuštěno VolanyProgram.py".decode("UTF-8")
Výstup správně překódovaného hlavního a volaného programu potom může vypadat následovně:
>>> # HlavniProgram.py
... import jmri
... print "spuštěno HlavniProgram.py".decode("UTF-8")
... execfile(jmri.util.FileUtil.getExternalFilename("scripts:VolanyProgram.py"))
spuštěno HlavniProgram.py
spuštěno VolanyProgram.py
vytvořeno 13. 9. 2019