2012-01-12 36 views
7

Próbuję dowiedzieć się kodowanie pliku w systemie Windows za pomocą Go. Przeprowadzając badania, znalazłem wiele rekomendacji dla Mozilli Charset Detectors (chardet), ale są one trudne do skompilowania i nie mam szczęścia.Jak wykryć kodowanie pliku?

Znalazłem także libguess i wygląda na to, że jest szeroko stosowany w Linuksie, ale nie mogę sprawić, żeby działał w systemie Windows.

Jaki jest najlepszy sposób, aby rozwiązać ten problem? Czy istnieje de facto standardowa biblioteka do użytku z systemem Go w systemie Windows?

+1

Właściwie nie oczekuj zbyt wiele (jest powód, dla którego libguess nazywa się lib * guess *). Bardzo polecam ten artykuł: http://www.joelonsoftware.com/articles/Unicode.html –

+0

Dzięki! Artykuł jest bardzo pomocny. –

Odpowiedz

0

Być może zainteresuje Cię Enca, Niezwykle naiwny analizator znaków. Sądzę, że mógłbyś spróbować odczytać plik używając wszystkich kodowań kandydujących i obliczyć, jak daleko każda z prób jest od "standardowego" rozkładu częstotliwości znaków dla tego języka. Enca wymaga pewnych informacji językowych, ale nie jestem pewien, czy używa tego podejścia. (To tylko pomysł, może być okropnie błędne.)

+0

Dzięki udostępnieniu tej biblioteki! Sprawdzę to. –

+0

Mam enca.exe po make, czy może być skompilowany do * .lib lub * .dll? –

+0

W dystrybucji istnieje cel biblioteki, ale nie mam pojęcia, jak utworzyć bibliotekę DLL. – zoul

1

Możesz użyć pakietu python: chardet.

+0

TARBET zawiera tabele częstości znaków, więc podejście statystyczne wydaje się być standardem. W najgorszym przypadku powinno być łatwo wykopać tabele częstotliwości i napisać niestandardowe rozwiązanie. – zoul

+0

Może uda mi się przenieść pakiet do wersji Go, jeśli nie znajdę żadnego gotowego do użycia. –

Powiązane problemy