2 | ||
Editor: geon
Time: 2011/10/10 21:20:12 GMT+2 |
||
Note: |
changed: - Unicode znaky =============== .. image:: py25.png :align: right Dotaz -------- Jak řešíte když v programu potřebujete nějaké speciální znaky jako řeckou abecedu či znak pro nekonečno? Odpověď -------- Musí se používat unicode řetězce. Ty se dají i v ascii zdrojáku zapsat pomocí náhradní sekvence. Před uvozovky nebo apostrofy se ale musí uvést malé u. Takže nekonečno se zapíše takto:: s = u'\u221e' Přehled unicode znaků ........................ | Kódy unicode znaků lze nalézt například přes http://www.unicode.org/charts/charindex.html. | Hledej ``INFINITY (\u221E)``. Klikni na číslo a objeví se část s velkým počtem matematických symbolů. | Přes http://www.unicode.org/charts/ se dostaneš k řeckým písmenkům. Výstup na obrazovku ................... Pro zobrazování se musí použít GUI okénko, který umí zobrazovat Unicode. Pro vyzkoušení můžeš použít IDLE:: # -*- coding: utf-8 -*- s = u'Příšerně žluťoučký kůň úpěl ďábelské ódy až do \u221e' print s Výstup do souboru ................ Pro zápis do souboru se musí konvertovat do správného kódování. Zkus tohle:: # -*- coding: utf-8 -*- prolog = u'''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Pokus s Unicode</title> </head> ''' epilog = u'</html>' s = u'Příšerně žluťoučký kůň úpěl ďábelské ódy až do \u221e' f = open('pokus.html', 'w') f.write(prolog.encode('utf-8')) f.write(s.encode('utf-8')) f.write(epilog.encode('utf-8')) f.close() Zdrojový soubor se musí uložit přes editor, který to umí uložit v kódování UTF-8. Nebo změň první řádek ve zdrojáku na kódování, které umí zachytit češtinu a ulož to v tom kódování -- například pod Windows v kódování windows-1250 (v Pythonu cp1250):: # -*- coding: cp1250 -*- prolog = u'''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Pokus s Unicode</title> </head> ''' epilog = u'</html>' s = u'Příšerně žluťoučký kůň úpěl ďábelské ódy až do \u221e' f = open('pokus.html', 'w') f.write(prolog.encode('utf-8')) f.write(s.encode('utf-8')) f.write(epilog.encode('utf-8')) f.close() V obou případech to vygeneruje stejný soubor pokus.html. Prohlížeč by s nekonečnem neměl mít problém.
Jak řešíte když v programu potřebujete nějaké speciální znaky jako řeckou abecedu či znak pro nekonečno?
Musí se používat unicode řetězce. Ty se dají i v ascii zdrojáku zapsat pomocí náhradní sekvence. Před uvozovky nebo apostrofy se ale musí uvést malé u. Takže nekonečno se zapíše takto:
s = u'\u221e'
Pro zobrazování se musí použít GUI okénko, který umí zobrazovat Unicode. Pro vyzkoušení můžeš použít IDLE:
# -*- coding: utf-8 -*- s = u'Příšerně žluťoučký kůň úpěl ďábelské ódy až do \u221e' print s
Pro zápis do souboru se musí konvertovat do správného kódování. Zkus tohle:
# -*- coding: utf-8 -*- prolog = u'''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Pokus s Unicode</title> </head> ''' epilog = u'</html>' s = u'Příšerně žluťoučký kůň úpěl ďábelské ódy až do \u221e' f = open('pokus.html', 'w') f.write(prolog.encode('utf-8')) f.write(s.encode('utf-8')) f.write(epilog.encode('utf-8')) f.close()
Zdrojový soubor se musí uložit přes editor, který to umí uložit v kódování UTF-8.
Nebo změň první řádek ve zdrojáku na kódování, které umí zachytit češtinu a ulož to v tom kódování -- například pod Windows v kódování windows-1250 (v Pythonu cp1250):
# -*- coding: cp1250 -*- prolog = u'''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Pokus s Unicode</title> </head> ''' epilog = u'</html>' s = u'Příšerně žluťoučký kůň úpěl ďábelské ódy až do \u221e' f = open('pokus.html', 'w') f.write(prolog.encode('utf-8')) f.write(s.encode('utf-8')) f.write(epilog.encode('utf-8')) f.close()
V obou případech to vygeneruje stejný soubor pokus.html. Prohlížeč by s nekonečnem neměl mít problém.