Automatyczne rozpoznanie kodowania tekstu w pliku .eml

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:

=?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.

0

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

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;
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.

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.

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!

0

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1