Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: LorD_OniX 19 Ledna 2010, 18:37:20

Název: Diakritika - nahrazeni
Přispěvatel: LorD_OniX 19 Ledna 2010, 18:37:20
Ahoj, potreboval bych poradit s jednou veci, kterou nemuzu vyresit. Mam nejake text v kodovani ISO-8859-1 a potreboval bych obecne nejakou radu, jak jakykoliv text prevest do cestiny bez diakritiky. Zkousel jsem program v cecku na nacitani ze standartniho vstupu, ale pri porovnani na treba š, to nikdo nefungovalo a obdobne jsem zkousel vytvorit skript v pythonu, ale taky jsem se nedockal uspechu. Vite nekdo nejaky zaruceny postup, jak si s timto poradit ?

Tohle je cast toho kodu v pythonu:
Kód: [Vybrat]
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys

for char in sys.stdin.read():
if unicode(char, 'ISO-8859-1') == unicode('š', 'utf-8'):
sys.stdout.write('s')
else:
sys.stdout.write(char)
Název: Re: Diakritika - nahrazeni
Přispěvatel: petergula 19 Ledna 2010, 19:43:46
http://www.bigwebmaster.com/General/Howtos/Slovak-HOWTO/tricks.html (http://www.bigwebmaster.com/General/Howtos/Slovak-HOWTO/tricks.html)

alebo v jave, alebo aj v tom c, len stale musis vediet v com je zdroj kodovany.

java:
http://www.macroware.cz/software/unicode/ (http://www.macroware.cz/software/unicode/)
Kód: [Vybrat]
System.out.println(Normalizer.normalize("žluťoučký", Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]",""));
Název: Re: Diakritika - nahrazeni
Přispěvatel: starenka 19 Ledna 2010, 20:00:46
Kód: [Vybrat]
starenka@kosmik1:/junk$ echo 'šřščřščřč' | iconv  -f utf-8 -t ascii//TRANSLIT
srscrscrc

utf si nahrad za co chces
Název: Re: Diakritika - nahrazeni
Přispěvatel: LorD_OniX 19 Ledna 2010, 22:03:58
Diky, hnedka to vyzkousim
Název: Re: Diakritika - nahrazeni
Přispěvatel: starenka 19 Ledna 2010, 23:22:34
ok?
Název: Re: Diakritika - nahrazeni
Přispěvatel: LorD_OniX 21 Ledna 2010, 09:46:18
Ahoj, nemohl jsem tedka odepisovat, byl jsem dva dny pryc.

Zkousel jsem nasledujici:
Kód: [Vybrat]
cat 201\ Garage\ Sale.CZ.srt | iconv  -f iso-8859-1 -t ascii//TRANSLIT > out

A ve vyslednem souboru out se objevili misto bez diakritickych znaku otazniky:
Kód: [Vybrat]
12
00:00:52,813 --> 00:00:56,010
Dob?e.

13
00:00:56,083 --> 00:01:00,213
- Tak?e, Laurie, co ma? dnes v dennim planu?
- V dennim planu?
Název: Re: Diakritika - nahrazeni
Přispěvatel: petergula 21 Ledna 2010, 10:01:47
Zkousel jsem nasledujici:
Kód: [Vybrat]
cat 201\ Garage\ Sale.CZ.srt | iconv  -f iso-8859-1 -t ascii//TRANSLIT > out

A ve vyslednem souboru out se objevili misto bez diakritickych znaku otazniky:

a nebude to tym, ze kodovanie iso-8859-1 ziadne ceske znaky nema, cize to kde si mal cesky znak pochopilo ako neznami znak otaznik. Do toho -f musis zadat v akom kodovani mas ten zdrojovy subor.

http://www.manpagez.com/man/1/iconv/
Citace
-f encoding, --from-code=encoding
              Specifies the encoding of the input.
-t encoding, --to-code=encoding
              Specifies the encoding of the output.
Název: Re: Diakritika - nahrazeni
Přispěvatel: LorD_OniX 21 Ledna 2010, 10:12:07
Jak jsem se dival, tak vim ze je to vstupni formatovani. To iso-8859-1 jsem si precetl z Geany, kde se v dolni liste pise kodovani. Bohuzel to na toto vubec nefungovalo, ale pomohlo to predelat na windows-1250, tak jsem trochu zmateny, proc Geany ukazovalo jine kodovani nez ve skutecnosti.
Název: Re: Diakritika - nahrazeni
Přispěvatel: LorD_OniX 21 Ledna 2010, 10:12:49
Diky moc vsem za odpovedi, hodne jste mne pomohli :)
Název: Re: Diakritika - nahrazeni
Přispěvatel: petergula 21 Ledna 2010, 10:59:35
Jak jsem se dival, tak vim ze je to vstupni formatovani. To iso-8859-1 jsem si precetl z Geany, kde se v dolni liste pise kodovani. Bohuzel to na toto vubec nefungovalo, ale pomohlo to predelat na windows-1250, tak jsem trochu zmateny, proc Geany ukazovalo jine kodovani nez ve skutecnosti.
ziadny program nevie z hlavy urcit, ake kodovanie je v subore, niektore programy sa o to pokusaju viac, ci menej uspesne(ja mam rad tie co sa o to vobec nesnazia). Najvacsi "odpornik" je napr. ms windows notepad, ktory vo windows xp spocita znaky v subore, spocita znaky z isteho rozsahu(tam kde sa zvyknu nachadzat znaky s diakritikou) a ak je pomer v nejakom rozsahu urci, ze je to dos 852, inak win1250 a v niektorych pripadoch utf-8. Takto sa choval aspon nam, pri testoch, niekedy 5rokov dozadu. Jasne ze sa nezmienujem o uvodnom byte, kde ma zaznacene, ze subor je v utf-8 a tam to celkom fungovalo :).