Automatyczne rozpoznanie kodowania tekstu w pliku .eml

Automatyczne rozpoznanie kodowania tekstu w pliku .eml
Henryk Batko
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Witam,

Chcę dobrać się do zawartości plików .eml. Tekst w tych plikach jest kodowany w różny sposób, wygląda to mniej więcej tak:

Kopiuj
=?iso-8859-2?Q?.................
=?UTF-8?Q?.....................

oczywiście mogą pojawić się także inne kodowania.
Czy jest jakiś w miarę bezbolesny sposób na automatyczne rozpoznanie kodowania takiego stringa i zamianę na zwykły (anis)string? Może coś z pakietu Indy?

Delphi 7.

robertz68
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zielona Góra
0

wykrycie kodowania to zwykłe Pos(), zamiana UTF8ToAnsi. Inne kodowania to napisanie prostych funkcji, np dla 8859-2

Kopiuj
function iso2win(S: string): string;
var
  i: Integer;
begin
  for i := 1 to Length(S) do // ISO -> WIN
    case S[i] of
      Chr(161):
        S[i] := Chr(165);
      Chr(166):
        S[i] := Chr(140);
      Chr(172):
        S[i] := Chr(143);
      Chr(177):
        S[i] := Chr(185);
      Chr(182):
        S[i] := Chr(156);
      Chr(188):
        S[i] := Chr(159);
    end;
  Result := S;
end;
Henryk Batko
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

No niby tak, ale różnych stron kodowych jest kilkadziesiąt(?) - to spore wyzwanie wszystkie w ten sposób obsłużyć. A z drugiej strony wydaje mi się że Windows powinien mieć wbudowane mechanizmy do obsługi takich łańcuchów.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

Z tego co pamiętam, Windows wewnętrznie operuje na ciągach unikodowych reprezentowanych jako UTF-16, natomiast API wystawia dla kodowania Ansi i UTF-16. Siłą rzeczy musi posiadać pełen wachlarz funkcji umożliwiających konwertowanie ciągów znaków pomiędzy różnymi kodowaniami.

robertz68
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zielona Góra
0

Jeśli problemem jest wykrywanie kodowania, możesz np. użyć programu Gżegżółka w wersji konsolowej http://www.gzegzolka.com/?m=down
Odpowiednio wywołane parametry uruchomieniowe powinny dość dobrze poradzić sobie z automatycznym wykrywaniem kodowania.
Uwaga - zakładam że w pliku eml nie ma załącznika!

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

w pakiecie synapse masz cały unit do zmiany kodowania, a obsługuje ich tam duuużżżżoooo

Henryk Batko
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
robertz68 napisał(a):

Jeśli problemem jest wykrywanie kodowania [...]

Nie, kodowanie jest jawnie podane w pliku tekstowym. Szukam właśnie czegoś, co odczyta i zastosuje wskazane kodowanie. I z takim sposobem zapisu kodowania gdzieś już się spotkałem, dlatego zakładam że to jest bardziej uniwersalna struktura.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.