Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Jak se zbavit netisknutelných znaků? [vyřešeno]  (Přečteno 2202 krát)

augustin

  • Návštěvník
  • *
  • Příspěvků: 66
    • Zobrazit profil
Jak se zbavit netisknutelných znaků? [vyřešeno]
« kdy: 05 Ledna 2012, 00:48:44 »
Potřebuju se zbavit netisknutelných znaků v txt souboru, který vznikl konverzí z doc documentu, je jich tam bohužel hodně, iconv na tom ztroskotává, což mě velmi irituje...

Kód: [Vybrat]
au@galway:~/tmp$ cat prvni4.txt | iconv --from-code UTF-8 --to-code ISO-8859-2 prvn� ot�zka Prameny obch. pr�va (obecn�, v�evr.pr�vu a �. pr�vu, p�sobnost obch.z�kon�ku)

O �esk�m pr�vn�m syst�mu a obecn� i o cel�m kontinent�ln�m pr�vu lze ��ci, �e se jedn� o psan� pr�vo, proto�e za prameny pr�va pova�uje (na rozd�l od angloamerick�ho pr�vn�ho syst�mu) t�m�� v�hradn� psan� pr�vn� normy iconv: illegal input sequence at position 353

Nejsem schopnej přijít na to, jaký znaky to jsou, abych je ručně odstranil nebo spíš nevím, jakej na to použít progam. Chtělo by to skript na odstranění non-printable characters. Všechno, co sem přes google našel, různý perl a pythonní vychytávky ale odstraňovaly i plno užitečnejch znaků jako je česká diakritika.
« Poslední změna: 05 Ledna 2012, 20:32:17 od daysleeper »

augustin

  • Návštěvník
  • *
  • Příspěvků: 66
    • Zobrazit profil
Re:Jak se zbavit netisknutelných znaků?
« Odpověď #1 kdy: 05 Ledna 2012, 01:14:02 »
Jestli tomu rozumím správně, tak tenhle příkaz by měl ukázat znaky:
Kód: [Vybrat]
au@galway:~/tmp$ od -c prvni4.txt | head -n 20
0000000   p   r   v   n 303 255       o   t 303 241   z   k   a       P
0000020   r   a   m   e   n   y       o   b   c   h   .       p   r 303
0000040 241   v   a       (   o   b   e   c   n 304 233   ,       v 302
0000060 240   e   v   r   .   p   r 303 241   v   u       a     304 215
0000100   .       p   r 303 241   v   u   ,       p 305 257   s   o   b
0000120   n   o   s   t       o   b   c   h   .   z 303 241   k   o   n
0000140 303 255   k   u   )  \n  \n   O     304 215   e   s   k 303 251
0000160   m       p   r 303 241   v   n 303 255   m       s   y   s   t
0000200 303 251   m   u       a       o   b   e   c   n 304 233       i
0000220       o       c   e   l 303 251   m       k   o   n   t   i   n
0000240   e   n   t 303 241   l   n 303 255   m       p   r 303 241   v
0000260   u       l   z   e     305 231 303 255   c   i   ,     305 276
0000300   e       s   e       j   e   d   n 303 241       o       p   s
0000320   a   n 303 251       p   r 303 241   v   o   ,       p   r   o
0000340   t   o 305 276   e       z   a       p   r   a   m   e   n   y
0000360       p   r 303 241   v   a       p   o   v   a 305 276   u   j
0000400   e       (   n   a       r   o   z   d 303 255   l       o   d
0000420       a   n   g   l   o   a   m   e   r   i   c   k 303 251   h
0000440   o       p   r 303 241   v   n 303 255   h   o       s   y   s
0000460   t 303 251   m   u   )       t 303 251   m 304 233 305 231   

jenže sloupečků je jen 16 a nalevo to ukazuje 20 :/

daysleeper

  • Závislák
  • ****
  • Příspěvků: 1206
    • Zobrazit profil
Re:Jak se zbavit netisknutelných znaků?
« Odpověď #2 kdy: 05 Ledna 2012, 10:56:31 »
Ten text v souboru prvni4.txt už je ve formátu utf8, proč ho převádíš do ISO-8859-2?
Můžeš někam nahrát (část) originálního txt souboru a napsat, co má být cílem?

augustin

  • Návštěvník
  • *
  • Příspěvků: 66
    • Zobrazit profil
Re:Jak se zbavit netisknutelných znaků?
« Odpověď #3 kdy: 05 Ledna 2012, 14:56:59 »
Snažím se ten text nechat vyslovit v eposu, bohužel epos je už dlouho neupgradovanej software a podporuje jen ISO-8859-2... Takže mým cílem vlastně je ta konverze do ISO-8859-2 z UTF-8. Jinak nejde mi o konverzi jedinýho textu, to bych kdyžtak udělal i ručně, mám těch textů hodně moc a chci to udělat hromadně.
« Poslední změna: 05 Ledna 2012, 14:58:37 od augustin »

daysleeper

  • Závislák
  • ****
  • Příspěvků: 1206
    • Zobrazit profil
Re:Jak se zbavit netisknutelných znaků?
« Odpověď #4 kdy: 05 Ledna 2012, 19:01:43 »
Můžeš někam nahrát (část) originálního txt souboru?

augustin

  • Návštěvník
  • *
  • Příspěvků: 66
    • Zobrazit profil
Re:Jak se zbavit netisknutelných znaků?
« Odpověď #5 kdy: 05 Ledna 2012, 19:09:56 »
začátek je tady: http://www.uloz.to/12283778/prvni4-txt originál má asi 200 stránek a pak mám ještě další, jak už sem psal.

daysleeper

  • Závislák
  • ****
  • Příspěvků: 1206
    • Zobrazit profil
Re:Jak se zbavit netisknutelných znaků?
« Odpověď #6 kdy: 05 Ledna 2012, 20:14:34 »
Původní text obsahuje znaky, které se v ISO-8859-2 nedají zobrazit, např. pomlčka ve větě
Kód: [Vybrat]
téměř výhradně psané právní normy – tedy obecně závazné právní normy (zákony).
způsobí tuto chybu
Kód: [Vybrat]
$ echo "–" | iconv --from-code UTF-8 --to-code ISO-8859-2
iconv: illegal input sequence at position 0

Možným řešením je použití přepínače TRANSLIT, který "nepřeložitelné" znaky nahradí podobným
Kód: [Vybrat]
$ echo "–" | iconv --from-code UTF-8 --to-code ISO-8859-2//TRANSLIT
-

Takže v tvém případě pro celý soubor např.
Kód: [Vybrat]
cat prvni4.txt | iconv --from-code UTF-8 --to-code ISO-8859-2//TRANSLIT > prvni4.iso88592.txt

augustin

  • Návštěvník
  • *
  • Příspěvků: 66
    • Zobrazit profil
Re:Jak se zbavit netisknutelných znaků?
« Odpověď #7 kdy: 05 Ledna 2012, 20:28:44 »
díky moc!!! něco přesně jako ten //TRANSLIT jsem hledal.. skvělý  ;D

 


Provoz zaštiťuje spolek OpenAlt.