TIA Skript Textdatei als Ascii deklarieren

blimaa

Level-2
Beiträge
964
Reaktionspunkte
105
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi
Wenn ich in einem Skript auf einer PC Runtime ein HTML erstellen lasse, dann kann ich dort mit
Code:
  Set textfile = fso.CreateTextFile(Zieldatei, True, True)
das Textfile als Ascii deklarieren. Somit werden die komischen Zeichen für üöä richtig dargestellt.
Wenn ich jetzt nun mit einem Comfortpanel das selbe will machen, dann gibt es ja kein .createTextFile.
Also mache ich:
Code:
Set fso = CreateObject("FileCtl.FileSystem")
Set textfile = CreateObject("FileCtl.File")
fso.dir(Zieldatei)
textfile.open Zieldatei, 2
Nun hat mir die Datei wieder die komischen Zeichen drin, da es nicht explizit als Ascii deklariert wird.

Weiss jemand, wie ich dies auch auf einem Comfort Panel deklarieren kann??


TIA V15.1

Gruss blimaa
 
Woher "weißt" Du daß "komische" Zeichen in der Textdatei vom Comfort Panel drin sind?
Kann es sein, daß nur Dein Textdatei-Empfänger oder -Viewer Dir falsche Zeichen anzeigt? (falsche Codierung oder falsche Schriftart eingestellt?)
Im ASCII-Standard gibt es äöü gar nicht. Es gibt verschiedene Erweiterungen, z.B. die Codepage 437 von IBM oder 850 von MS, da haben die Umlaute äöü die Codes 0x84, 0x94, 0x81
In html-Dateien und Windows werden standardmäßig die Codierungen ISO 8859-1 und Windows-1252 verwendet, da haben die Umlaute äöü die Codes 0xE4, 0xF6, 0xFC

Wo kommen "Deine" Umlaute her? Werden die auf dem Comfort Panel mit der Bildschirmtastatur eingegeben und/oder als Text angezeigt? Dann sind die m.W. ebenfalls nach ISO 8859-1 codiert.

Wo genau ist Dein Problem?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

Wenn ich die HTML Datei auf meinen PC rüber kopiere und diese Datei mit VisualStudioCode öffne, dann habe ich diese komischen Zeichen auch dort drin.
Dieses Problem hatte ich auch schon, als ich dieses Skript für eine PC Runtime machte. Abhilfe war die dekleration als Unicode --> https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/createtextfile-method

Sorry hab es falsch geschrieben, ich möchte es als Unicode deklarieren. Du hast recht, Ascii wäre schlecht.. :)

Die Umlaute kommen vom WinCC AuditTrail CSV, wo ich die Einträge auslese und in das HTML kopiere.
 
Zuletzt bearbeitet:
Wenn ich folgendes mache stellt es in der Meldungsanzeige richtig dar:

Code:
textfile.LinePrint  "<td>"&stringliste(5)&"</td>" 'Description
        ShowSystemAlarm "Problem" & stringliste(5)
Also gehe ich davon aus, dass das Problem beim File ist

Ah der Fehler ist, es schreibt mir ein replacement character rein.
 
1. Achtung, Du programmierst in VBS und nicht in VBA. Orientiere Dich nicht an der VBA-Dokumentation.
2. Mit dem VBS auf Comfort Panels kann man nicht explizit Unicode-Dateien erstellen. Man müsste selbst alle Zeichen in Unicode umwandeln. Damit habe ich allerdings keine Erfahrung.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi
Trotzdem besten Dank.
Hab noch folgendes ausprobiert:
- Fix im Skript üäö als HTML geschrieben--> es werden dann auch replacement character geschrieben
 
Es wird noch besser....
Wenn ich das HTML bei mir im ganz normalen "Editor" (Notepad) öffne, dann sind die Umlaute wieder da......

Edit:
So die Lösung ist folgendes:
Das HTML durfte man nicht als "UTF-8" deklarieren sondern als "Windows-1252", da das File nicht als Unicode gespeichert wurde....
 
Zuletzt bearbeitet:
Wenn ich das HTML bei mir im ganz normalen "Editor" (Notepad) öffne, dann sind die Umlaute wieder da......
Schau Dir die erzeugte Textdatei als Hexdump an. Notepad interpretiert die Textzeichen in der Datei um die Codierung zu erkennen und passt die Darstellung ggf. an.

Du könntest die Sonderzeichen > 127 selbst in UTF-8 wandeln. (Ich weiß nicht, ob es in VBS eine fertige Funktion oder Methode dafür gibt.) So könnte es auf dem Comfort Panel funktionieren:
Code:
Set f = CreateObject("FileCtl.File")
f.Open Zieldatei, 2 'ForWriting

buf = "Mein Text mit ÄÖÜäöüß"
buf = Replace(buf,"Ä",Chr(&HC3)&Chr(&H84),1,-1) 'alle Ä ersetzen
buf = Replace(buf,"Ö",Chr(&HC3)&Chr(&H96),1,-1) 'alle Ö ersetzen
buf = Replace(buf,"Ü",Chr(&HC3)&Chr(&H9C),1,-1) 'alle Ü ersetzen
buf = Replace(buf,"ä",Chr(&HC3)&Chr(&HA4),1,-1) 'alle ä ersetzen
buf = Replace(buf,"ö",Chr(&HC3)&Chr(&HB6),1,-1) 'alle ö ersetzen
buf = Replace(buf,"ü",Chr(&HC3)&Chr(&HBC),1,-1) 'alle ü ersetzen
buf = Replace(buf,"ß",Chr(&HC3)&Chr(&H9F),1,-1) 'alle ß ersetzen

f.LinePrint buf
f.Close

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi
Ja an solch ein Suchen/Ersetzten hatte ich auch mal gedacht....
Ich denke ich lass es mal jetzt auf ANSI im HTML. Es wird immerhin jetzt richtig angezeigt....

Gesendet von meinem LYA-L29 mit Tapatalk
 
Zurück
Oben