[gelöst] Umlaut im Dateinamen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
kirchfritz
Beiträge: 282
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

[gelöst] Umlaut im Dateinamen

Beitrag von kirchfritz »

Hallo,

ich lese mit den Indy-Komponenten unter Lazarus 2.2.4 aus einer .EML-Datei alle Attachments und möchte diese als einzelne Dateien im FileSystem ablegen.

Das funktioniert mit folgendem Code hervorragend:

Code: Alles auswählen

uses
  Classes, SysUtils,
  IdMessage, IdAttachment, IdAttachmentFile;

procedure ExtractAttachments(const MailFile, TargetDir: string);
var
  Msg: TIdMessage;
  i: Integer;
  Att: TIdAttachmentFile;
  OutFile: string;
begin
  Msg := TIdMessage.Create(nil);
  try
    Msg.LoadFromFile(MailFile);

    ForceDirectories(TargetDir);

    for i := 0 to Msg.MessageParts.Count - 1 do
    begin
      if Msg.MessageParts.Items[i] is TIdAttachmentFile then
      begin
        Att := TIdAttachmentFile(Msg.MessageParts.Items[i]);

        OutFile := IncludeTrailingPathDelimiter(TargetDir) +
                   Att.FileName;

        Att.SaveToFile(OutFile);

        WriteLn('Gespeichert: ', OutFile);
      end;
    end;
  finally
    Msg.Free;
  end;
end;
Aufgerufen wird das dann so:

Code: Alles auswählen

begin
  ExtractAttachments(
    'C:\Temp\Test.mail',
    'C:\Temp\Attachments'
  );
end;
Nun enthält aber eine meiner Attachmentdateien im Namen ein "Ö". Wenn dies mit

Code: Alles auswählen

Att.SaveToFile(OutFile);
gespeichert wird, sehe ich im FileSystem leider kein "Ö" sondern "Ö".

Frage: Was ist zu tun, dass im FileSystem die Umlaute richtig dargestellt werden?

Viele Grüße aus Nürnberg
Fritz
Zuletzt geändert von kirchfritz am Do 8. Okt 2026, 11:35, insgesamt 1-mal geändert.

paweld
Beiträge: 128
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: Umlaut im Dateinamen

Beitrag von paweld »

Code: Alles auswählen

uses
  LazUTF8;

Att.SaveToFile(UTF8ToWinCP(OutFile));
Grüße / Pozdrawiam
paweld

kirchfritz
Beiträge: 282
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Umlaut im Dateinamen

Beitrag von kirchfritz »

Ich habe mit MS-CoPilot zusammen eine Lösung für mein Problem gefunden:
Ich verwende jetzt folgendes:

Code: Alles auswählen

uses 
  LConvEncoding;
  
Att.SaveToFile(UTF8ToCP1252(OutFile)); 
Das funktioniert bei mir!

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1847
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: [gelöst] Umlaut im Dateinamen

Beitrag von fliegermichl »

Es gibt auch UTF8ToSys. Diese soll in den aktuell vom System verwendeten Zeichensatz konvertieren.

Antworten