[Riješeno] Convert encoding HTML datoteka iz windows-1250 u UTF-8

1

[Riješeno] Convert encoding HTML datoteka iz windows-1250 u UTF-8

offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

Na zadnji problem nisam dobio nikakvu pomoć, Sad
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.
offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • 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.



offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

@bocke
hvala ti na javljanju i savjetu.
Međutim to je nemoguće jer nemam Linux
POZDRAV

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • 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.

offline
  • IvanC 
  • Ugledni građanin
  • 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

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • 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.

offline
  • IvanC 
  • Ugledni građanin
  • 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 Smile
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 Smile
pozdrav

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • 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.

offline
  • IvanC 
  • Ugledni građanin
  • 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

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Previše mi je taj način spor i komplikovan. Evo mnogo jednostavnijeg načina sa ovim malim besplatnim programom. Kreirao sam za primer u C:\dir tri fajla, index1.TXT, index2.TXT i index3.TXT sa ovim sadržajem:

100 200 300 500

A u istom direktorijumu još jedan folder koji sadrži iste te fajlove:



Onda sam pokrenuo program fnr.exe i popunio parametre:



Klik na Replace i to je to Very Happy Ne samo da je brže, već je i mnogo detaljnije:



Program je moguće koristiti i preko komandne linije. Ekvivalentno za ovaj gornji primer bi bilo sledeće:

fnr.exe --cl --find "500" --replace "400" --dir "C:\dir\" --fileMask "*.TXT" --excludeFileMask "*.dll, *.exe" --includeSubDirectories

Ko je trenutno na forumu
 

Ukupno su 932 korisnika na forumu :: 30 registrovanih, 5 sakrivenih i 897 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, 9k38, aleksmajstor, Andrija357, Apok, darkangel, dekan.m, Dimitrise93, Dovla, drimer, ILGromovnik, JOntra, jukeboxer, krkalon, ksyyaj, ladro, MegaVLAdaR, mercedesamg, Milometer, nenad81, ozzy, Panter, Rakenica, robert1979, saputnik plavetnila, Srki94, Sumadija34, vladaa012, vukovi, |_MeD_|