AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Umgang mit Textdateien verschiedener Kodierungen.
Thema durchsuchen
Ansicht
Themen-Optionen

Umgang mit Textdateien verschiedener Kodierungen.

Ein Thema von MechMac666 · begonnen am 8. Sep 2020 · letzter Beitrag vom 8. Sep 2020
Antwort Antwort
Seite 1 von 2  1 2      
MechMac666

Registriert seit: 9. Nov 2008
95 Beiträge
 
#1

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 08:23
Erstmal die Frage: Woran machst du das überhaupt fest?
Was mache ich fest? (Verstehe die Frage nicht.)
Zu der letzten Frage: Windows scheint nicht mit BOM zu speichern. Zumindest ist es in Notepad nicht so eingestellt.


Ich habe einige Versuche gemacht mit "tstrings".
-Delphi scheint weiterhin als ANSI zu speichern.
-Wenn ich eine UTF8 Datei lade und wieder speichere ist sie weiterhin UTF8, auch bei modifikation mit ASCII zeichen.
Bei Modifikation mit z.B. "ä" oder "ü" wird daraus beim speichern eine ANSI Datei.


Ok, bleibt das Problem falls ich eine Datei in Notepad bearbeite und anschließend mit Delphi verwenden möchte UND Sonderzeichen enthalten sind.
Im einfachsten Fall eine Liste mit Dateipfaden welche "ä", "ö" etc. enthalten.
Wie soll ich ich nun erkennen ob das UTF8 oder ANSI ist? (Notepad kann's offensichtlich)

Gruß, Andreas
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
461 Beiträge
 
Delphi 12 Athens
 
#2

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 08:39
Dasselbe Problem habe ich auch mit Textdateien aus Notepad seit Win10. Wenn ich es gemerkt habe, habe ich sie dann im Notepad als Ansi gespeichert. Leider aber noch keine Zeit gehabt, mich wirklich darum zu kümmern.
  Mit Zitat antworten Zitat
Jumpy

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

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 09:04
Nur zum Verständnis: Werden diese Dateien auch außerhalb vom Delphi-Programm manipuliert und das ist dann das Problem? Den Delphi kannst du ja sagen, dass es immer ANSI schreiben und lesen soll.

Ich benutze immer Notepad++ als Texteditor. Da kann man die Codierung erkennen und ändern.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#4

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 09:19
Seit kurzem bietet Delphi eine interaktive Option für das Standard-Dateiformat unter Tools - Optionen - Benutzeroberfläche - Editoroptionen - Standarddateocodierung. Vorher konnte man das nur über einen Registry-Eintrag ändern.

Aktuell wird die aktuelle Codierung einer Unit auch in der Statuszeile des Editors angezeigt und lässt sich auch dort ändern. Bei älteren Delphi-Versionen geht das noch über das Kontextmenü.

In allen Fällen schreibt Delphi aber ein BOM in die Datei und benutzt dieses auch für die Erkennung. Ohne BOM wird strikt ANSI angenommen. Obwohl unüblich (zumindest unter Linux) - für Delphi ist das UTF8-BOM obligatorisch! Das hat u.A. auch Vorteile bei den diversen Versionskontrollsystemen, da dort auch schon mal andere Annahmen herrschen als bisher unter Windows üblich.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#5

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 09:41
@UWE, geht das ìnzwischen auch bei DFMs?

Hab es noch nicht ausprobiert, aber da ich zufällig gestern mal wieder das Problem in XE hatte, dass bei DFMs das UTF-8-BOM verschwindet.
Außerdem macht das Text-EnDecoding bzw. Binär-Text-Umkodieren dort ja eine eigene "Funktion".


Entweder Delphi/IDE muß das besser können oder ich muß an unserem fanatischen Linux-Jünger vorbei im GIT für Delphi versuchen das anzupassen.
GIT (Tortoise/GitHub) hat Merge paar Problemchen, wenn es jeweils UTF-8 und ANSI versucht zu mergen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Sep 2020 um 09:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#6

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 11:04
@UWE, geht das ìnzwischen auch bei DFMs?
In Delphi 10.4.1 wird (unabhängig von der Default-Codierung) ein UTF8-BOM geschrieben, wenn die Datei Non-ASCII Zeichen für Delphi Identifier enthält. Alle Non-ASCII Zeichen in String-Werten werden dagegen (schon) immer als Escape-Sequenzen dargestellt und erfordern keine UTF8 Codierung der DFM.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 15:44
Wenn du eine Stringlist in Ansi speichern willst schreibe es so:

  Strings.SaveToFile('abc.txt', TEncoding.Ansi);
  Mit Zitat antworten Zitat
MechMac666

Registriert seit: 9. Nov 2008
95 Beiträge
 
#8

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 09:55
Seit kurzem bietet Delphi eine interaktive Option für das Standard-Dateiformat unter Tools - Optionen - Benutzeroberfläche - Editoroptionen - Standarddateocodierung. Vorher konnte man das nur über einen Registry-Eintrag ändern.
Deine Aussage bezieht sich aber jetzt auf die Projektdateien (*.pas, *.dfm, etc.)
Darum geht es hier ja nicht.


Nur zum Verständnis: Werden diese Dateien auch außerhalb vom Delphi-Programm manipuliert und das ist dann das Problem?
Bis vor fünf Minuten hätte ich "Ja" gesagt, aber gerade habe ich ein Programm von mir aus 2017 gestartet, welches eine "Jobliste" ganz simpel aus einer TStringlist speichert:
Und das Ergebnis ist laut Notepad in UTF8. Allerdings macht es das auch unter WIN 7. Aber in beiden Fällen ist das nicht gewollt. Es ist nur nie aufgefallen, weil Notepad unter Win 7 das so nicht anzeigt und bisher keine Sonderzeichen enthalten waren.
Ich muss da erstmal weitere Versuche machen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#9

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 10:14
Jetzt wo du es sagst.

Vor paar Tagen war mir das im Windows auch aufgefallen. (ich dachte aber ich hätte nur nicht richtig geguckt)
Notepad speichert neuerdings als UTF-8, wenn man eine neue Textdatei erstellt hat.
(auf Arbeit bekomm ich sowas nicht mit, weil jemand der meinung war wir müssen unbedingt so einen hässlichen Notepad2-mod installieren, der bei ALLEN die notepad.exe ersetzt)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
MechMac666

Registriert seit: 9. Nov 2008
95 Beiträge
 
#10

AW: Umgang mit Textdateien verschiedener Kodierungen.

  Alt 8. Sep 2020, 10:56
Jetzt wo du es sagst.

Vor paar Tagen war mir das im Windows auch aufgefallen. (ich dachte aber ich hätte nur nicht richtig geguckt)
Notepad speichert neuerdings als UTF-8, wenn man eine neue Textdatei erstellt hat.
(auf Arbeit bekomm ich sowas nicht mit, weil jemand der meinung war wir müssen unbedingt so einen hässlichen Notepad2-mod installieren, der bei ALLEN die notepad.exe ersetzt)
Tja, wenn du mal was verrücktes sehen willst:
Create ne Tstringlist, adde eine Zeile "Hello MS" und speichere.
Das macht du nochmal mit "Hällo M$" und wieder speichern.

Die erste Datei ist in UTF8 und die zweite in ANSI. Selbst wenn du explizit in beiden
Fällen sagst er soll als ANSI speichern.

Zumindest wenn man Notepad glaubt...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06: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