Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: n 05. 09. 2017, 22:00:48
-
mam retezc ktery je kodovany ve windows-1250
kdyz chci proti tomu retezci porovnat retezec s diakritikou ktery do zdrojoveho kodu rucne napisu, tak nemam shodu a musim uvest 'vlastni_retezec'.decode('windows-1250')
na zacatku souboru jsem ale uvedl
#-*- coding: windows-1250 -*-
nemela by me ta deklarace zbavit povinosti to prevadet?
-
neměla, slouží pro deklaraci souboru jako takového.
-
Nezapoměl jsi ten soubor i uložit jako windows-1250?
-
Myslím, že interaktivní příklad přímo v Pythonu to vysvětluje sám o sobě:
>>> 'Vlastní řetězec'
'Vlastn\xc3\xad \xc5\x99et\xc4\x9bzec'
>>> 'Vlastní řetězec'.decode('windows-1250')
u'Vlastn\u0102\xad \u0139\u2122et\xc4\u203azec'
neboli deklarace kódování souboru nemění vnitřní způsob uložení dat řetězce, ten je vždy stejný, proto je nutné jej pro výstup v konkrétním kódování dekódovat.
-
Proc by jsi chtel neco ukladat v cp-1250 ? Jinak v poradku ? Jidlo chutna ? Stromy si stebou nepovidaji ?
-
Ahoj,
tak jde i o to jak ten retezec nacitas, pokud jsem donucen pracovat s cp-1250 tak pouzivam codecs
import codecs
text = codecs.open(filename, 'r', 'cp-1250').read()
a ted uz by ti klasicke if melo fungovat aniz bys v kodu delal brikule, navic samotny kod muzes mit klidne v utf-8
-
V první řadě se ujistěte, že ten soubor je opravdu uložen v cp1250. Sice to máte v hlavičce, ale editor to mohl uložit v jakémkoliv jiném kódování.
(Ale jak tu někdo naznačoval, používat dnes cp1250 není potřeba. Když už musíte mít diakritiku v kódu, tak je lepší UTF-8.)