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