![]() |
Eine TextDatei öffnen mit Utf-8 Zeichensatz
Hallo,
Ich muß eine Textdatei einlesen. Das Problem ist das der Inhalt polnisch ist. Die Textdatei wurde mit dem UTF-8 Zeichensatz gespeichert. Erst habe ich versucht die Datei mit AssignFile(f,s) zu öffnen. f ist vom type TextFile und s vom Type Widestring. Im Debugmodus erkenne ich jedoch schon das die Zeichen in s nicht richtig dargestellt werden. Mein zweiter Versuch war dann die Datei mit TFileStream zu öffnen jedoch habe ich hier auch das gleiche Porblem. Die Zeichen werden nicht richtig dargestellt. Hier mein Quellcode zu meinem ersten Versuch:
Delphi-Quellcode:
Und mein Quellcode zum zweiten Versuch:
var
s : WideString; f : TextFile; begin OpenDialog1.Execute; AssignFile(f, OpenDialog1.Filename); Reset(f); While not eof(f) do begin Readln(f,s); Image1.Canvas.Font.Charset := EASTEUROPE_CHARSET; Image1.Canvas.Font.Size := 8; TextOutW(Image1.Canvas.Handle, 0, 0, PWideChar(s), Length(s)); end; CloseFile(f); end;
Delphi-Quellcode:
In der Textdatei ist folgender Wert : 'Wewnętrzne szczegóły'
var
s : WideString; f : TFileStream; begin OpenDialog1.Execute; f := TFileStream.Create(OpenDialog1.FileName, fmOpenRead); SetLength(s, 10); f.Read(s[1], 10); f.Free; Label3.Caption := s; Image1.Canvas.Font.Charset := EASTEUROPE_CHARSET; TextOutW(Image1.Canvas.Handle, 0, 0, PWideChar(s), 10); end; Ps. TextOutW ist eine Api Funktion wenn ich für s zum Beispiel #9787 angebe wird mir auch das richtige Zeichen in meinem Image ausgegeben. Kann mir einer erklären wie man eine Textdatei (Utf-8) richtig auslies? [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
Moin dwagner,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. [EDIT] Mist, entsprach Deinem zweiten Beispiel :? Hatte ich wegen der fehlenden Formatierung übersehen ;-) [/EDIT] |
Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
Hallo Christian,
Erst mal Danke für Dein Hilfe. Ich habe Deinen Ansatz wie folgt getestet:
Delphi-Quellcode:
Leider funktioniert dies nicht. Ich hatte ebenfalls schon versucht die Datei mit Hilfe von
var
fs : TFileStream; wsBuf : WideString; begin OpenDialog1.Execute; fs := TFileStream.create(OpenDialog1.FileName, fmOpenRead); try wsBuf := StringOfChar(#00,fs.Size); fs.Read(wsBuf[1],fs.Size); Label3.Caption := wsBuf[1]; Image1.Canvas.Font.Charset := EASTEUROPE_CHARSET; TextOutW(Image1.Canvas.Handle, 0, 0, PWideChar(wsBuf), fs.Size); finally FreeAndNil(fs); end; end; FileStream zu öffnen jedoch werden die Zeichen falsch dargestellt. Ich bin ziemlich sicher das das Problem beim einlesen der Textdatei entsteht da ich erstens eine Label Komponente installiert habe die Unicode unterstützt und mit dem Zeichen #8797 auch getestet habe und zweitens die Ausgabe der Api Funktion TextOutW ebnfalls funktioniert. [edit=Christian Seehase]Delphi-Tags gesetzt. Mfg, Christian Seehase[/edit] |
Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
Moin dwagner,
leider hab' ich keine passende Datei zur Hand, um etwas auszuprobieren, da ich nicht sicher weiss, wie solche Dateien auszulesen sind. Falls es geht, könntest Du ja mal ein Beispiel anhängen. (aber ich denke mal, es wird sich auch so noch jemand finden der Dir weiterhelfen kann ;-)) |
Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
Liste der Anhänge anzeigen (Anzahl: 1)
Ich arbeite eigentlich mit einer csv Datei. Also ein Textdatei derren Inhalt durch ';' getrennt sind.
Beispiel: b_kfzfinanz.gif;b_kfzfinanz.gif;Finanzierung;Finan sowanie b_kfzintern.gif;b_kfzintern.gif;Interne Details;Wewnętrzne szczegóły Am Ende Jeder Zeile sind die Polnischen Wörter die ich mit den Umlauten brauche. Um jedoch mein Problem zu lösen gehe ich einfach hin und schreibe in eine Textdatei ein einzelnes polnisches Wort. Im den Anhang koppiere ich Dir mal meine Beispieldatei. Wenn Du Zeit und Lust hast kannst Du es ja mal porbieren ich währe Dir sehr dankbar. |
Re: Eine TextDatei öffnen mit Utf-8 Zeichensatz
Zitat:
![]() Die Stringlist-Klassen müßten in der aktuellen Version auch UTF8-Dateien einlesen können (in meiner verwendeten Version nur Unicode-Files mit Big/Little-Endian). Auch sind alle Oberflächen-Controls Unicode-Enabled. Als keine notwendigkeit mit der Krüppellösung Codepages/Charset zu arbeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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