Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz