[TLUG] encoding

Dariusz Laskowski tlug at linux.gda.pl
Sat, 9 Apr 2005 00:43:27 +0200


On Fri, 08 April 2005 23:35:31 +0200, Maciej Jan Głowacki wrote:

>>> jak rozpoznać automatycznie kodowanie polskich znaków pliku tekstowego?

>> W przypadku ogólnym się nie da (a przynajmniej nie bez eliminowania
>> poszczególnych możliwości po jednej). file może co najwyżej określić, że
>> to tekst wykorzystujący pełne (8-bitowe) ASCII, ale strony kodowej nie
>> poda. Można próbować to zrobić, znając z góry język i sprawdzając parę
>> częstych słów ze słownika.

> Fragment man file, wersja linuxowa:

> Jeśli plik nie pasuje do żadnego z wpisów w pliku liczb magicznych,
> dokonywane jest sprawdzenie czy jest to plik tekstowy. Rozpoznawane są
> zestawy znaków: ASCII, ISO-8859-x, 8-bitowe rozszerzenia ASCII niezgodne
> z ISO (używane w systemach Macintosh i IBM PC), Unicode w kodowaniu UTF-8,
> Unicode w kodowaniu UTF-16 oraz EBCDIC. Sprawdzane są zakresy i ciągi
> bajtów, które stanowią drukowalny tekst w każdym z tych zestawów znaków.
> Jeśli plik przejdzie któryś z tych testów, zgłaszany jest odpowiadający mu
> zestaw znaków. Pliki w ASCII, ISO-8859-x, UTF-8 oraz w rozszerzeniach
> ASCII są identyfikowane jako ,,text'', gdyż są one na ogół czytelne na
> dowolnym terminalu; pliki w UTF-16 i EBCDIC stanowią jedynie ,,character
> data'' (dane znakowe), gdyż jeśli zawierają one tekst, tekst ten wymaga
> przed przeczytaniem konwersji. Dodatkowo, file będzie próbował określić
> inne charakterystyki plików tekstowych. Jeśli wiersze są zakończone
> znakami CR, CRLF lub NEL, zamiast standardowego uniksowego LF, zostanie to
> zgłoszone. Zostaną również zidentyfikowane pliki zawierające wbudowane
> sekwencje unikowe lub wielokrotnego drukowania.

$ ls -1
test-ascii.txt
test-iso-8859-13.txt
test-iso-8859-2.txt
$ file test-ascii.txt
test-ascii.txt: ASCII text
$ file test-iso-8859-2.txt
test-iso-8859-2.txt: ISO-8859 text
$ file test-iso-8859-13.txt
test-iso-8859-13.txt: ISO-8859 text

File zgadł tylko, że drugi i trzeci plik jest "ośmiobitowcem",
ale strony kodowej już nie zgadł (13 vs 2 w powyższym teście).

-- 
Dariusz Laskowski    Przemysław Walasek: Profesor Miodek mówił kiedyś,
darlas at post.pl                        że pisze się: A h.. z tym.
                      Andrzej Grażyński: Przecież pisany przez CH
                                         jest o 1/3 dłuższy!!!