Poslao: 05 Avg 2015 12:24
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
Na zadnji problem nisam dobio nikakvu pomoć,
pa eto, probat ću sada za drugi problem.
Dakle, imam preko 1500 klasičnih *.html files (odrađenih u FrontPage/DreamWeaver koji imaju encoding windows-1250, želim sve files konvertirati u UTF-8
Ima li netko neku skriptu koja može konvertirati sve HTML datoteke u folderu i subfolderima u jednom potezu
Trenutna situacija je
- svi *.html files nalaze se na putanji C:\Temp\ i oni su HTML encoding "windows-1250". Folder Temp sadrži subfoldere
- u svakom *.html file između <head>...</head> imam slijedeću liniju koda
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
Potrebno mi je slijedeće:
1. Skripta treba u svim files izvršiti convert iz windows-1250 u UTF-8
2. Nakon izvršenog encodinga, snimiti sve files
3. Ponovo pregledati sve files
4. U svim files izmjeniti liniju koda u slijedeće (koristeći Find/Replace)
pronaći liniju koda
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
zamjeniti u slijedeću liniju
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Ili možda to može odraditi Notepad++ ali ja ne znam kako za sve files u folderu. Ako idem jedan po jedan file to nije problem, ali preko 1500 files već jeste
Može li netko pomoći: isprogramiranom skriptom, savjetom, linkom, iskustvom?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 05 Avg 2015 12:42
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12488
- Gde živiš: Južni pol
|
Napisano: 05 Avg 2015 12:38
IvanC ::Dakle, imam preko 1500 klasičnih *.html files (odrađenih u FrontPage/DreamWeaver koji imaju encoding windows-1250, želim sve files konvertirati u UTF-8
Ima li netko neku skriptu koja može konvertirati sve HTML datoteke u folderu i subfolderima u jednom potezu.
Pod Linuksom bi to odradio ovako:
find . -type f -iname "*.html" -exec iconv -f WINDOWS-1250 -t UTF8 {} \;
Pošto postoje portovi i find i iconv na Windows, moguće je da se može uraditi isto. Sa malom razlikom što bi "find" morao da se preimenuje (recimo u gfind), jer Windows već dolazi sa alatkom "find" koja služi za potpuno drugačiju namenu.
Portove možeš skinuti sa sajta GnuWin32 projekta. Find se tamo nalazi u pakeu FindUtils, a iconv u paketu libiconv.
Dopuna: 05 Avg 2015 12:42
IvanC ::pronaći liniju koda
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
zamjeniti u slijedeću liniju
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Pod Linuksom bih uradio nešto poput ovoga:
find . -type f -iname "*.html" -exec sed -i "s/charset=windows-1250/charset=UTF-8/" {} \;
S time što se ovde razlikuju mala i velika slova, pa "windows-1250" i "WINDOWS-1250" nisu isto.
Sed je takođe dostupan sa GnuWin32 sajta.
|
|
|
|
Poslao: 05 Avg 2015 12:45
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
@bocke
hvala ti na javljanju i savjetu.
Međutim to je nemoguće jer nemam Linux
POZDRAV
|
|
|
|
Poslao: 05 Avg 2015 12:47
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12488
- Gde živiš: Južni pol
|
IvanC ::Međutim to je nemoguće jer nemam Linux
Ne treba ti Linuks. Nisi me dobro shvatio. Baci pogled na GnuWin32 sajt koji sam linkovao u mom prethodnom postu. To su nativne verzije Unix/Linux alata za Windows.
|
|
|
|
Poslao: 06 Avg 2015 23:12
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
@bocke
Hvala ti, mada mi djeluje komplicirano na prvi pogled pogotovo što nisam doma sa "programming code", ako ne nađem neku jednostavniju skriptu vjerojatno će to biti zadnja opcija.
pozdrav
|
|
|
|
Poslao: 06 Avg 2015 23:43
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12488
- Gde živiš: Južni pol
|
Nije problem. Videću da ti sutra napišem i objasnim ceo postupak ako stignem. Video sam malu greškicu pa moram nešto da proverim. Ali inače je dobar put do rešenja. I zaista nije komplikovano.
|
|
|
|
Poslao: 07 Avg 2015 09:19
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
bocke ::Nije problem. Videću da ti sutra napišem i objasnim ceo postupak ako stignem. Hvala ti na dobroj volji. Meni se ne žuri pa tako nemoj ni ti
bocke ::Video sam malu greškicu pa moram nešto da proverim. E to je vidiš problem koji bi možda natjerao me da odustanem.
bocke :: I zaista nije komplikovano.
Tamo sam vidio masu tih programčića a skinuo sam "findutils-4.2.20-2.exe"
Pa sam se pitao što dalje
pozdrav
|
|
|
|
Poslao: 07 Avg 2015 14:21
|
offline
- bocke
- Moderator foruma
- Glavni moderator Linux foruma
- Pridružio: 16 Dec 2005
- Poruke: 12488
- Gde živiš: Južni pol
|
Slobodno potraži drugo rešenje. Windows port (nativna verzija) komande iconv ne podržava parameter "-o", a Windows komandna linija se ponaša drugačije od Linuks komande linije pa nisam u mogućnosti da to zaobiđem.
Ali da je problem na Linuksu, sada bi moj predlog samo malo preobličio i to bi šljakalo.
find . -type f -iname "*.html" -exec iconv -f WINDOWS-1250 -t UTF8 {} -o {} \; -exec sed -i "s/charset=windows-1250/charset=UTF-8/gI" {} \;
Ovde je glavna komanda find koja traži datoteke u trenutnom direktorijumu (".") po određenim kriterijumu. U ovom slučaju sve "obične datoteke" ("type -f") čije ime sadrži "*.html" (-iname "*.html") zatim nad svakom od pronađenih datoteka izvršava komandu pod exec. Znakovi "{}" se zamenjuju imenom pronađene datoteke koja se obrađuje. Znak ";" ili "\;" označava da je to kraj komande.
Pojedinačne komande koje exec izvršava su "iconv" i "sed". Iconv konvertuje tekst iz jednog kodnog rasporeda (-f KODNI-RASPORED) u drugi kodni raspored (-t KODNI-RASPORED). Novije GNU verzije dolaze sa opcijom "-o" kojom je moguće navesti datoteku u koju će biti zapisana datoteka rezultat. Ova opcija nedostaje u Windows verziji.
Sed je unix alatka za obradu teksta. U ovom slučaju koristimo komandu zamene ("s"), gde se tekst "charset=windows-1250" zamenjuje sa tekstom "charset=UTF-8". Karakteri "gI" označavaju globalnu zamenu i ignorisanje veličine slova pri pretrazi.
|
|
|
|
Poslao: 15 Avg 2015 19:13
|
offline
- Pridružio: 30 Jun 2009
- Poruke: 403
|
Napisano: 07 Avg 2015 19:07
Citat:Slobodno potraži drugo rešenje.
@bocke
Hvala ti na dobroj volji, trudu kao i objašnjenju. Možda ovo pomogne nekome tko radi na Linuxu.
Dakle, ja i dalje tražim rješenje pomoću skripte ili programa, konvertiranja windows-1250 u UTF-8
Dopuna: 15 Avg 2015 19:13
Riješio sam problem na drugačiji način
Detaljan tutorijal korak po korak možete vidjeti na linku
- Konvert iz Windows-1250 u UTF-8 u više datoteka u folderima i subfolderima
|
|
|
|
|