Automatyczna zmiana kodowania - bash

Potrzebujesz pomocy z C, C++, perl, python, itp.
istrd
Beginner
Posty: 127
Rejestracja: 14 stycznia 2009, 17:18

Automatyczna zmiana kodowania - bash

Post autor: istrd »

Witam.
Chcę zmienić kodowanie w danym katalogu wszystkich plików. Do tego chcę użyć basha ale nie wiem jak przerobić skrypt tak aby z każdego kodowania zamieniał na ISO-8859-2.
Wydaje polecenie

Kod: Zaznacz cały

enca -i *
dostaję taki wynik, kodowanie jakby jest nie znane.

Kod: Zaznacz cały

root@debian:/scripts/index# enca -i *add.phtml: ???
contact.phtml: ???
index.phtml: ???
poczekalnia.phtml: ???
random.phtml: ISO-8859-2
read.phtml: ???
top.phtml: ???
vote.phtml: ASCII
zmien.sh: ASCII

W skrypcie mam na razie tyle, bo tyle znalazłem w sieci. Ale to zamienia tylko z UTF-8 do tego nie nadpisuje pliku tylko tworzy nowy, jak to zmienić?

Kod: Zaznacz cały

#!/bin/sh

for file in *
do
iconv --from-code=UTF-8 --to-code=ISO-8859-2 $file > $file\_utf
done
maxdawid
Posty: 52
Rejestracja: 17 września 2008, 11:30

Post autor: maxdawid »

Kod: Zaznacz cały

#!/bin/sh

for file in *
do
   iconv -t ISO88592 $file > $file_1
   mv $file_1 $file
done


istrd
Beginner
Posty: 127
Rejestracja: 14 stycznia 2009, 17:18

Post autor: istrd »

Jak poradzić sobie z tymi znakami zapytania jakiego polecenia użyć żeby te zmieniły się na ISO-8859-2? Próbuje bez skryptu poleceniem enca troche plików się zmieniło ale tam gdzie kodowanie jest nieznane pojawia się błąd.

Kod: Zaznacz cały

 root@debian:/home/istrd/tmp# enca -x ISO-8859-2 *enca: Cannot convert `addform.phtml' from unknown encoding
enca: Cannot convert `loginform.phtml' from unknown encoding

Kod: Zaznacz cały

addform.phtml: ???addvideoform.phtml: ???
addvideoform.phtml2: ???
contactform.phtml: ISO-8859-2
footer.phtml: ISO-8859-2
header.phtml: ISO-8859-2
komentform.phtml: ISO-8859-2
loginform.phtml: ???
My_pagination_control.phtml: ASCII
regform.phtml: ISO-8859-2
fnmirk
Senior Member
Posty: 8324
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

A podejrzałeś zawartość pliku, którego kodowanie nie zostało rozpoznane? U mnie tak są rozpoznawane np. pliki, które zawierają same cyfry lub adresy stron www. Podobnie mogą być rozpoznawane teksty korzystające z innych alfabetów (moje przypuszczenie).
istrd
Beginner
Posty: 127
Rejestracja: 14 stycznia 2009, 17:18

Post autor: istrd »

fnmirk pisze:A podejrzałeś zawartość pliku, którego kodowanie nie zostało rozpoznane? U mnie tak są rozpoznawane np. pliki, które zawierają same cyfry lub adresy stron www. Podobnie mogą być rozpoznawane teksty korzystające z innych alfabetów (moje przypuszczenie).

Treść w tych plikach to html i php. Korzystam z Zend Framework'a. Spróbuje utworzyć nowe pliki, i skopiować zawartość do nowego i zapisać Vim'em z opcją np. se: enc=utf8
fnmirk
Senior Member
Posty: 8324
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

To wszystko się zgadza. Jeżeli jest przewaga kodu nad treścią, w której występują znaki tylko z zestawu ascii to taki plik nie ma prawa mieć określonego kodowania, w sposób automatyczny. Tyle kiedyś sprawdziłem.
istrd
Beginner
Posty: 127
Rejestracja: 14 stycznia 2009, 17:18

Post autor: istrd »

Jutro, w wolnym czasie sprawdzę, czy to na 100% to. Dam znać może komuś się przyda.

Dodane:
Zrobiłem tak, wykasowałem wszystkie polskie znaki oraz krzaki z plików uruchomiłem vima, ustawiłem kodowanie i zapisałem plik:

Kod: Zaznacz cały

:se enc=nazwakodowania
ODPOWIEDZ