Portál AbcLinuxu, 12. listopadu 2025 01:54
file mi hodil: UTF-8 Unicode English text.
Vdaka.
Muj laickej postup by byl otevřít v textovym editoru a pak nahradit všechny písmena (replace all) ... když už to nechcete dělat skriptem.
cstocs -i utf-8 ascii file_name
iconv, recode.
Moznosti je spousta, jde to treba takto:
cat soubor1 | \
tr áéěíóúůýžščřďťňľ aeeiouuyzscrdtnl > \
soubor2
Pokud chybi nejaka, treba velka pismena, staci doplnit.
Nebo zkuste: skript cnv pro SED od L. Škarvady. Pro ziskani informaci o pouziti staci spustit:
# ./cnv
jen tak na prazdno bez parametru.
mood = (machine != slackware) ? depressed : euphoria;Tohle jede i v utf8? Máš na to nějaký patch pro tr, po kterém to nahrazuje ne po osmibitových skupinách, ale po písmenech podle locale?Moznosti je spousta, jde to treba takto:
cat soubor1 | tr áéěíóúůýžščřďťňľ aeeiouuyzscrdtnl > soubor2
No jo, nejak jsem prehlidnul ze se tady mluvi o utf8. Moc se omlouvam. Vtom pripadu asi nebude fungovat ani ta legracka cnv.
mood = (machine != slackware) ? depressed : euphoria;$ cat abeceda_cz áÁčČďĎěĚéÉíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ $ recode --force utf8..flat abeceda_cz $ cat abeceda_cz aAcCdDeEeEiInNoOrRsStTuUuUyYzZMusí se dát parametr --force, protože jde o nevratné překódování.
#!/usr/bin/env python
import unicodedata
old = u'ahojáÁčČďĎěĚéÉíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ'
norm = unicodedata.normalize('NFKD', old)
new = norm.encode('ascii', 'ignore')
print old
print new
Výsledek:
ahojáÁčČďĎěĚéÉíÍňŇóÓřŘšŠťŤúÚůŮýÝžŽ ahojaAcCdDeEeEiInNoOrRsStTuUuUyYzZZákladní myšlenka by měla fungovat pro jakékoli kódování.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.