AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhanden

UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhanden

Ein Thema von juergen · begonnen am 5. Mär 2014 · letzter Beitrag vom 5. Mär 2014
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand

  Alt 5. Mär 2014, 10:57
SORRY, Problem erkannt!
Mein Problem ist, wenn ich die Datei ein 2. Mal mit Utf8ToAnsi() umwandle, dann sind keine Umlaute mehr vorhanden!

Wie kann man sowas umgehen, ich müsste erst prüfen ob es überhaupt eine UTF-8 Datei ist.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand

  Alt 5. Mär 2014, 11:02
Du kannst doch einfach bei SaveToFile angeben, mit welchem Encoding er speichern soll?

Delphi-Quellcode:
procedure TForm22.Button1Click(Sender: TObject);
var
   sl: TStrings;
   line: String;
begin

   sl := TStringList.Create();
   sl.LoadFromFile('C:\Users\[...]\test.txt');

   sl.SaveToFile(
      'C:\Users\[...]\test_ansi.txt',
      TEncoding.ANSI
   );


end;
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand

  Alt 5. Mär 2014, 11:18
Zitat:
Wo / Ab wann gibt es denn diese Funktion "Utf8ToAnsi" die in #1 benutzt wird?

Ich brauch sowas (und die Umkehrfunktion) für D6 und hab da nix gefunden und mir daher selber was reichlich unelegantes für die gängigsten Zeichen (z.B. Umlaute ) gebastelt.
Ziehe die Frage zurück. Jetzt wo ich weiß, wie es heißt, hab ich was gefunden.
Ralph

Geändert von Jumpy ( 5. Mär 2014 um 11:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand

  Alt 5. Mär 2014, 11:37
@Der schöne Günther.
Danke für den Hinweis. Das war auch mein erster Ansatz, da das so in der Classes-Unit steht. Allerdings kennt mein Delphi nur TEncoding.ASCII.
Notepad erkennt diese Datei dann als ANSI Datei, aber die Umlaute wurden falsch encodiert.

Im Prinzip habe ich nun eine Lösung mit Utf8ToAnsi() die funktioniert.
Ich schreibe mir beim ersten öffnen der UTF-8 Datei ein Flag in die Datei, so dass ich beim nächsten Öffnen der Datei weiß, dass diese von mir schon mal umgewandelt worden ist.

Vielen Dank und noch einen schönen Tag!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand

  Alt 5. Mär 2014, 11:58
UTF-8 Dateien haben - wenn sie korrekt gespeichert wurden - doch schon ein "Flag", das sogenannte "Byte Order Mark".

http://de.wikipedia.org/wiki/Byte_Order_Mark

Also das heisst, dass du beim ersten Öffnen schon daran erkennen könntest, ob es sich um eine UTF8-Datei handelt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#6

AW: UTF-8 Datei einlesen, umwandeln in ANSI...statt Umlaute sind Fragezeichen vorhand

  Alt 5. Mär 2014, 12:10
Unter Delphi XE wird die Ansi-Codierung mit TEncoding.Default festgelegt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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