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
-
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:
#!/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)
-
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/)
System.out.println(Normalizer.normalize("žluťoučký", Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]",""));
-
starenka@kosmik1:/junk$ echo 'šřščřščřč' | iconv -f utf-8 -t ascii//TRANSLIT
srscrscrc
utf si nahrad za co chces
-
Diky, hnedka to vyzkousim
-
ok?
-
Ahoj, nemohl jsem tedka odepisovat, byl jsem dva dny pryc.
Zkousel jsem nasledujici:
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:
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?
-
Zkousel jsem nasledujici:
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/
-f encoding, --from-code=encoding
Specifies the encoding of the input.
-t encoding, --to-code=encoding
Specifies the encoding of the output.
-
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.
-
Diky moc vsem za odpovedi, hodne jste mne pomohli :)
-
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 :).