![]() |
Text/ASCII-Datei in ASCII-Code umwandeln
moin,
Ich habe hier eine Text/Ascii Datei, in der einige Zeichen enthalten sind, die das Notepad nicht darstellen kann (kleine Rechtecke). Wenn ich die Datei in ein Memo lade werden die Zeichen als Fragezeichen dargestellt. Wenn ich sie in eine Stringliste lade und mit Ord() in Ascii-Code umwandle dann wird â (#226), € (#128) und © (#169) ausgegeben. Aber der Test (die Zeichen wieder in die Datei schreiben) schlägt fehl. Es handelt sich bei der Datei um eine von Adobe InDesign CS erstellte XML Datei, in InDesign stellen die Zeichen einen Zeilenumbruch da. Allerdings stehen sie an (meines Erachtens) falscher/ungültiger Stelle nämlich nicht zwischen Tags, das ganze scheint also irgendwie irregulär zu sein. Allerdings brauche ich die Zeilenumbrüche und muss also wissen welche Zeichen ich in die Datei schreiben muss. Ich hoffe ihr habt eine Idee wie ich das Problem angehen könnte. |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Wo ist das Problem?
Habe ich irgenwie den Punkt verpasst? Wenn Du ein XML-Dokument lesen/schreiben möchtest, solltest Du eine entsprechende Bibliothek (z.B. MS-XML) einsetzten (-> diese beachtet dann auch vorhandene Zeichensatztbeschreibungen). Ist das Einlesen der Datei mit dem Parser nicht möglich - so handelt es sich wahrscheinlich um ein "nicht XML-Konformes" Format. |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
lassen wir den XML-Teil mal außen vor, ich möchte eigentlich nur alle in der Datei vorhandenen Zeichen mit ihrem ASCII-Code auflisten.
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Auswahl der wichtigsten Zeiichen :
Delphi-Quellcode:
function AnsiToIBMAscii(s: string): string;
var i: integer; begin Result := ''; for i := 0 to Length(s) do begin case s[i] of #196: Result := Result + #142; //Ä #214: Result := Result + #153; //Ö #220: Result := Result + #154; //Ü #228: Result := Result + #132; //ä #246: Result := Result + #148; //ö #252: Result := Result + #129; //ü #223: Result := Result + #225; //ß else Result := Result + s[i]; end; end; end; |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Liste der Anhänge anzeigen (Anzahl: 1)
hm,
anscheinend habe ich mein Problem nicht richtig verdeutlichen können. Dann greife ich jetzt halt zur Brachialmethode :mrgreen: im Anhang befindet sich die besagte Datei. Öffnet sie mit Firefox und sagt mir für was die Fragezeichen stehen oder öffnet sie mit dem IE bzw. Notepad und sagt mir für was die Kästchen stehen. |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Moin!
Meines Erachtens sind das Standard Zeilenvorschübe in UTF-8 korrekt kodiert. MfG Muetze1 |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
ha,
Zitat:
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Moin!
Wozu überhaupt? Laut XML Standard ist es völligst egal was zwischen den Tags steht - das sollen die Clients etc überlesen - und meiner z.B. macht das auch ohne Probleme. Daher ist die Frage ob du wirklich diese Zeichen brauchst? Wenn es eine richtige XML Datei sein soll, dann schreibe es ganz normal ohne Firlefanz in die Datei und schreibe ohne nicht UTF-8 als encoding rein sondern ISO-8859-15 und gut ist. MfG Muetze1 |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
tja, das Dumme ist nur, dass nicht ICH die Datei erstellt habe, sondern Adobe InDesign CS und das bietet nur UTF-8, UTF-16 und Shift-JIS als Kodierung an. Die besagten Zeichen stellen tatsächlich einen Zeilenumbruch da, und genau den brauche ich auch zwingend, warum er nicht zwischen Tags steht kann ich auch nicht sagen :|
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Moin!
Wieso er nicht dazwischen steht? Laut XML Standard sind alle Zeichen mit ASCII Code < 32 nicht zu beachten und zu überlesen. Im Normalfall braucht kein CR/LF drinne sein, das ist nur für den Nutzer, damit er dies besser lesen kann. Ok, dann lass Adobe dies doch schreiben - aber was kümmert dich das? Wo liegt denn nun dein genaues Problem? Also Adobe schreibt die Datei, selber eine schreiben willst du laut der Reaktion auf meinen vorherigen Post auch nicht und Lesen willste die XML wohl irgendwie auch nicht - also frage ich mich, was soll den mit den Zeichen sein und was genau willst du nun wissen? MfG Muetze1 |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Das Problem ist folgendes: Es handelt sich bei dem Ganzen um die Profil Seiten eines/meines ;) Abibuches. Ich habe ein Layout, in das die Daten von 60 Personen eingefügt werden muss. Die Daten liegen in normalen Textdateien txt/doc vor. Da InDesign diese nette XML-Import Funktion hat, dachte ich mir halt, ich schaf die Daten in eine XML-Datei, importiere die in InDesign und fertig is. Das hat den vorteil, dass ich mich um den ganzen Layout-Teil nur EIN mal kümmern müsste. Leider baut InDesign diese ominösen Zeichen in die XML-Datei ein (beim Exportieren natürlich :stupid: irgendwoher muss ich ja wissen wie das XML-Dokument aufgebaut sein muss) die wohl Zeilenumbrüche darstellen. Wenn ich sie aus der XML-Datei lösche bzw. nicht reinschreibe verrutscht leider mein ganzes Layout :cry:
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Moin!
Jetzt kommen wir der Sache doch schon näher. Und was spricht dagegen ein Delphi Programm zu schreiben welches die Datei so rauschreibt und dabei die komischen Sonderzeichen mit gleichem Code an der Stelle x,y einzufügen wo sie auch Adobe reinpackt und an den anderen Stellen die benötigten Namen/Informationen? MfG Muetze1 |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Zitat:
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Liste der Anhänge anzeigen (Anzahl: 1)
Moin!
Wozu? Die Codes die du in deiner Beispieldatei findest kannst du doch 1:1 wieder rausschreiben. Es sind nur Bytes mit einem Wert und wenn du nun wieder Bytes mit dem gleichen Wert schreibst, erhälst du nun auch wieder die gleichen Zeichen. Die Darstellung der Zeichen ist schnuppe, das ändert nix an den Werten, die sind gleich. Ich habe dazu mal meinen heissgeliebten Total Commander genommen, die test.xml angezeigt mit F3 und in die Hex Ansicht umgeschaltet und bekam folgendes --- womit doch dann alles geklärt sein müsste, oder? MfG Muetze1 |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
vielen Dank für deine Bemühungen.
Eine kleine Frage hätte ich noch wie kann ich die besagten Zeichen in eine Datei schreiben? (ich hab in Delphi bisher nur mit Stringlisten und Textdateien gearbeitet) |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Moin!
Wie hast du dies denn bei den Textdateien gemacht? MfG Muetze1 |
Re: Text/ASCII-Datei in ASCII-Code umwandeln
mit Stringlisten :angel2:
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Zitat:
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
auf die Gefahr hin, dass ich mich entgültig lächerlich mache, aber wie soll ich die Zeichen in eine Textdatei/in einen String schreiben wenn ich ihren (ASCII-)Code nicht kenne?
|
Re: Text/ASCII-Datei in ASCII-Code umwandeln
Moin!
Zitat:
2. In der Liste einen Code hinzufügen: einfach beim String basteln ein Chr(Code) einfügen oder wenn es statischer Text ist einfach mit der Doppelroute einleiten. Beispiel um in dem String das ASCII Zeichen mit dem Code 85 einzufügen: a)
Delphi-Quellcode:
b)
sl.Add('Dies ist ein TestString mit dem komischen Charakter ' + Chr(85) + ' im String');
Delphi-Quellcode:
3. Du kannst wahrscheinlich die StringListe nutzen, die wird wahrscheinlich keine Probleme machen. Ansonsten hast du noch die Möglichkeit zum einen z.B. über den moderneren TFileStream und ansonsten noch über die alten Pascal Routinen (siehe Hilfe AssignFile(), Reset(), ReWrite(), Read(), ReadLn(), Write(), WriteLn(), Eof(), CloseFile(), Seek())
sl.Add('Dies ist ein TestString mit dem komischen Charakter ' + #85 + ' im String');
4. Noch Fragen? MfG Muetze1 PS: endgültig kommt vom Ende... :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 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