Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Textdatei auf gültigen Zeichensatz prüfen (https://www.delphipraxis.net/170950-textdatei-auf-gueltigen-zeichensatz-pruefen.html)

Mike_on_Tour 12. Okt 2012 07:17

Textdatei auf gültigen Zeichensatz prüfen
 
Guten Morgen,

eine vom Programm erzeugte Textdatei enthält angeblich verschiedene Zeichen-Codierungen, also z.B. ISO 8859, ISO 646 und Codepage 850. Es betrifft alle Umlaut-Zeichen. Wie kann man das überprüfen bzw. gibt es dafür Programme (Name) ? Welche Systemeinstellungen sind dafür verantwortlich ?

Viele Grüße,
Mike

Bernhard Geyer 12. Okt 2012 07:26

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Da kann man eigentlich nur raten.

Um Probleme zu umgehen sollten Textdateien als Unicode-Textdateien mit einem UTF8 oder Big/Little-Endian-BOM versehen sein.

Mike_on_Tour 12. Okt 2012 08:13

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Die Spezifikation lässt Unicode nicht zu. Erlaubt sind nur 8-Bit-Codes.

Bummi 12. Okt 2012 08:16

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Eine Ansammlung von Bytes ohne Kennung/Header o.ä.
IMHO keine Chance ...

Mike_on_Tour 12. Okt 2012 08:26

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Die Ansammlung von Bytes hat schon eine feste Struktur, aber es gibt keine Information zur verwendeten Codierung.

himitsu 12. Okt 2012 09:08

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Jupp, ANSI (CodePages/Zeichensätze) besitzen keine Kennung, wie z.B. das Unicode-BOM,
denn diese besitzen alle die selbe Kodierung und nur die Interpretation der einzelnen Werte (z.B. per Transformationstabellen ala 'ner CodePage) unterscheidet sich.

Beim Unicode hat aber jeder Wert ein genau definiertes Zeichen, aber die Kodierung/Speicherung dieser Werte ist vorgegeben.
Dieses BOM, welches man z.B. kennt, ist ein bestimmter Wert (Marker) und anhand dessen, wie er gespeichert wurde, erkennt man daran, um welches Encoding es sich handelt. (abgesehn von einer Standardkodierung, welche man sich für die jeweilige Datei, bzw. das jeweilige OS festgelegt hat).


Wie also schon genannt wurde:
Wenn nicht irgendwo steht, um welche Kodierung es sich handelt, wie z.B. BOM, Attribut (XML) oder irdendwas Externes, ist es unmöglich.

Abgesehn von 7-Bit-Kodierungen, wie z.B. ASCII, sind im ANSI eigentlich erstmal alle Zeichen gültig.



PS: Das Thema wurde schon mehrmals hier angesprochen. SuFu?
Man kann versuchen über Wörterbücher, Häufigkeitsverteilungen von Zeichen oder bestimmte CodeMuster zu erkennen, um was es sich handelt, aber 100%ig Sicher ist das niemals.

p80286 12. Okt 2012 09:43

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Das ein Programm Textausgaben mit unterschiedlichen Codierungen erstellt, finde ich schon sehr seltsam. Wenn dann auch noch ISO 646 und ISO 8859 gemischt werden.. aber gut meine Phantasie reicht für soetwas nicht aus.

Um was für Daten handelt es sich denn dabei? Sind sie irgendwie strukturiert?
ist der Text in Abschnitte unterteilt, mit z.b. Titel und Sprachangabe?
Oder handelt es sich um plain text?

Gruß
K-H

RWarnecke 12. Okt 2012 09:48

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Das Programm Notepad++ zeigt Dir unten rechts ein Codierung an, sofern Notepad++ diese auslesen kann.

Bernhard Geyer 12. Okt 2012 10:09

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Zitat:

Zitat von himitsu (Beitrag 1186724)
Man kann versuchen über Wörterbücher, Häufigkeitsverteilungen von Zeichen oder bestimmte CodeMuster zu erkennen, um was es sich handelt, aber 100%ig Sicher ist das niemals.

Wird aber problematisch sein wenn mehrer Codepages in einer Datei sein sollen und man nicht weiß wo die einzelnen Abschnitte Anfangen oder Aufhören.

Mike_on_Tour 15. Okt 2012 13:26

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Erst mal Danke für die Antworten.

Einen kleinen Fehler konnte ich inzwischen lokalisieren und beheben. Dabei handelte es sich um 10 Jahre alte Daten, die damals noch unter MS-DOS erstellt wurden und im Programm intern als ANSI konvertiert werden. Das Speichern der Daten erfolgt (aus historischen Gründen) wieder im DOS-Zeichensatz. Es wird also hin und her konvertiert. Die Dateiausgabe soll dann wieder im DOS-Zeichensatz erfolgen und da war dann auch das Problem. Wen es interessiert, die Datenstruktur gehört zum euBP-Verfahren.

p80286 15. Okt 2012 14:51

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Solange Buchstaben nur der Darstellung dienen, sollte es da auch keine Probleme geben.
Das Konvertieren von Daten sollte eigentlich immer Kritisch gesehen werden, vor allem wenn es nur darum geht, Daten anzuzeigen.

Ich hab' mal kurz Google angeworfen, und wenn mir dann im Zusammenhang mit euBP XML entgegenleuchtet, dann solltest Du schleunigst aus den DosDaten (743/850) ANSI bzw UTF8 machen, und dann die alten Daten ruhen lassen.

Gruß
K-H

Mike_on_Tour 15. Okt 2012 15:25

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Mir gefällt das hin und her konvertieren auch nicht, ich muss aber damit arbeiten. Bei einer Archivtiefe von über 10 Jahren bleibt einem eine Konvertierung kaum erspart, oder ? Danke für das "Leuchten", aber für mich sind nur die "Grundsätze für die Übermittlung der Daten für die elektronisch unterstützte Betriebsprüfung" bindend, weil Gesetz (da steht nichts von XML).

p80286 15. Okt 2012 16:04

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Interessant, was man alles so im Internet findet...
Wie wäre es denn, mit mehreren Code"Generationen" zu arbeiten?
BZw. zumindestens die Dateien falls möglich, mit den verwendeten Code zu kennzeichnen?
z.b. Daten1980.850.txt ?

Dann hätte man eine Chance Unstimmigkeiten zu finden.

Gruß
K-H

Mike_on_Tour 15. Okt 2012 16:17

AW: Textdatei auf gültigen Zeichensatz prüfen
 
Ich hätte da auch so ein paar Vorschläge, aber im Zeitalter der modernen Technik können leider nur Dateinamen mit 8.3 Zeichen verarbeitet werden und von 8 Zeichen sind noch 5 Zeichen fest. Bleiben 3 Zeichen für individuelle Angaben wie Zähler und so. Die 3 Zeichen nach dem Punkt bleiben leer. Das steht dann in den "Richtlinien zum Datenaustausch im Gesundheits- und Sozialwesen" und noch in ein paar anderen Unterlagen. Aber das ist schon wieder ein anderes Thema.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 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