![]() |
Problem mit Sonderzeichen beim Einlesen von CSV-Dateien
Hallo zusammen!
Ich habe mir in Excel eine Liste mit französischen Vokabeln incl. ihrer Sonderzeichen angelegt (z.B. ç = [links-Alt] 135). Wenn ich die als CSV-Datei abspeichere, kann ich sie mit Excel, Libre Office Calc oder dem Windows-Editor öffnen, und die Sonderzeichen werden korrekt dargestellt. Wenn ich die CSV-Datei aber als Textfile in Delphi einlese, werden die Sonderzeichen nicht korrekt wiedergegeben. Ich bin ratlos, wie dies Problem gelöst werden kann. Meine Vorstellung ist, dass man Delphi mitteilen muss, dass es sich um Unicode-Zeichen handelt. Vielleicht kann mir hier jemand weiter-helfen. Dafür schon im Voraus herzlichen Dank! MfG Gelmo Codebeispiel:
Delphi-Quellcode:
Ergebnis:var Vokdatei, DSZ : String; CSVF : Textfile; procedure TForm1.Button2Click(Sender: TObject); begin … VokDatei:=Opendialog1.FileName; filemode:=0; // read-only assignfile(CSVF,VokDatei); reset(CSVF); while not eof(CSVF) do begin readln(CSVF,DSZ); // DSZ = Datensatz showMessage(DSZ); end; end; Excel: mère français «bientôt» Editor : mère;français;«bientôt» Delphi : mère;français;«bientôt» P.S. Zusatzbemerkung : Als Separator verwendet Excel offenbar das Semikolon, aber was dient als Delimiter? Ist aber aktuell nicht von Bedeutung, da die Datensätze „technisch“ richtig übernommen werden. |
AW: Problem mit Sonderzeichen beim Einlesen von CSV-Dateien
Die Datei scheint im UTF-8 Format zu sein und wird als Standard-ASCII interpretiert zu werden.
|
AW: Problem mit Sonderzeichen beim Einlesen von CSV-Dateien
OK, Excel verwendet also UTF-8. Nur, wie kann ich Delphi veranlassen, diesem Zeichensatz ebenfalls zu verwenden?
|
AW: Problem mit Sonderzeichen beim Einlesen von CSV-Dateien
Ich verwende für so etwas eine Stringliste:
Delphi-Quellcode:
procedure demo;
var t : TStringlist; LDateiname : string; begin LDateiname := 'meinecsvdatei.csv'; t := TStringlist.create; try t.LoadFromFile( LDateiname, TEncoding.UTF8 ); t.tue_irgend_etwas... finally t.free; end; end; |
AW: Problem mit Sonderzeichen beim Einlesen von CSV-Dateien
Vielen Dank!
Ich habe gerade hier im Forum gefunden, dass readln und writln nur mit ASCII funktionieren. Ich probier es jetzt mit einer Stringlist. Das sind gute Aussichten. MfG Gelmo |
AW: Problem mit Sonderzeichen beim Einlesen von CSV-Dateien
Oder Du ersetzt in Deinem Code:
Readln(CSVF,DSZ); ShowMessage(Utf8ToAnsi(DSZ)); Hartmut |
AW: Problem mit Sonderzeichen beim Einlesen von CSV-Dateien
Aber nicht, wenn DSZ ein String bleibt.
AnsiString, RawByteString oder besser gleich UTF8String. Bei Letzterem kann man dann auch das Utf8ToAnsi weglassen. Und warum überhaupt Ansi? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz