Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kryptische Zeichen beim Einlesen von .csv (https://www.delphipraxis.net/196802-kryptische-zeichen-beim-einlesen-von-csv.html)

StepByStep 21. Jun 2018 08:27

Kryptische Zeichen beim Einlesen von .csv
 
Guten Morgen zusammen,

ich habe derzeit ein Problem und komme nicht weiter. Mein Versuch im Internet zu recherchieren hat mir leider auch nicht geholfen...

Mittels einer StringList möchte ich via LoadFromFile eine CSV-Datei einlesen, was soweit auch klappt, allerdings erscheinen bei Umlauten kryptische Zeichen. So wird aus einem "Ä", dann: "ä". Ich hätte behauptet, dass das etwas mit der Unicodefähigkeit der StringList zu tun hat, sicher bin ich mir dabei aber nicht.

Hat jemand eine Idee, was ich mal ausprobieren könnte?

Gruß

Sherlock 21. Jun 2018 08:28

AW: Kryptische Zeichen beim Einlesen von .csv
 
Welches Format hat denn die csv-Datei?

Sherlock

StepByStep 21. Jun 2018 08:33

AW: Kryptische Zeichen beim Einlesen von .csv
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also, wenn ich das richtig sehe, dann sollte es UTF-8-BOM sein oder?

Gruß

hoika 21. Jun 2018 08:56

AW: Kryptische Zeichen beim Einlesen von .csv
 
Hallo,
einfach Utf8Decode oder ein verwandte Methode benutzen.

Delphi.Narium 21. Jun 2018 09:01

AW: Kryptische Zeichen beim Einlesen von .csv
 
Die Anzeige ist typisch für UTF8, das nicht als solches erkannt wird.

Ansonsten einfach mal bei der Suchmaschine Deiner Wahl utf8 ä Delphi eingeben, die Ergebnismenge ist nicht unerheblich.

ä müsste das kleine ä sein.

jobo 21. Jun 2018 09:03

AW: Kryptische Zeichen beim Einlesen von .csv
 
Will uns sagen, dass die CSV im Editor Deiner Wahl korrekt angezeigt wird, nicht aber nach der Verarbeitung in Delphi?

Die Zeichencodierung kann manchmal redundant sein, also Anzeige Ä, aber verschiedene Codierung. Ob das bei Ä auch der Fall ist, weiß ich nicht.
Die Codierung wiederum muss vom Font darstellbar sein, das ist keine Selbstverständlichkeit. > Passenden Font für GUI Darstellung wählen/prüfen.

Für einen einmaligen (Import) Vorgang würde ich ggF. die Basisdatei nach Ansi konvertieren.
Prüfen kannst Du auch, ob bei Betrachtung mit einem Hexeditor, der Wert für das Ä auch dem gängigen Code entspricht. Dabei berücksichtigen, das am Anfang Deiner Datei die BOM steht.

Schokohase 21. Jun 2018 09:20

AW: Kryptische Zeichen beim Einlesen von .csv
 
Kann ich so nicht bestätigen.

Delphi-Quellcode:
program ConsoleApp;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.Classes,
  System.SysUtils;

procedure Main;
var
sl:TStringList;
str:string;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('test.csv');
    str:=sl.Text;
    WriteLn(str);
  finally
    sl.Free;
  end;
end;

begin
  try
    Main;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  ReadLn;
end.
Gibt mir exakt das aus, was auch in der Datei (UTF8-BOM) enthalten ist.

Somit brauchen wir ein Minimales Projekt (inkl. einer CSV-Datei) was diesen Fehler zeigt.

StepByStep 21. Jun 2018 09:38

AW: Kryptische Zeichen beim Einlesen von .csv
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Somit brauchen wir ein Minimales Projekt (inkl. einer CSV-Datei) was diesen Fehler zeigt.
>> Habe ich drangehangen. Ist Delphi7! :oops:

Delphi.Narium 21. Jun 2018 09:51

AW: Kryptische Zeichen beim Einlesen von .csv
 
Delphi 7 kann von Haus aus kein UTF8.

Delphi-Quellcode:
ShowMessage(Utf8ToAnsi(slDaten.Strings[1]));
sollte Dein Problem beheben.

StepByStep 21. Jun 2018 09:56

AW: Kryptische Zeichen beim Einlesen von .csv
 
@Delphi.Narium: Das habe ich gerade auch gefunden, damit geht es. ^^

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz